1:Row,最主要注意的一點就是內容不能超過邊界,否則會出錯誤。這裡補充的是如果使用了Expanded,那麼其中的Widget的尺寸就不再起作用
2:StatefulWidget組件:執行了setState子組件也會更新
3:A組件包含B組件,B組件在使用setState報錯
4:重新setState父組件重新執行Widget build(BuildContext context)方法不會重新new一個對象
解釋:以下方法不會重新調用
@override
StatecreateState() {
print("MainProcressWidget====MainProcressState");
return new MainProcressState();
}
5:從新頁面返回數據給上一個頁面:https://flutterchina.club/cookbook/navigation/returning-data/
6:如果提示:androidx.core.相關錯誤:請使用以下方法解決:
解決方案1:
在gradle.properties文件中加入
android.enableJetifier=true
android.useAndroidX=true
解決方案2:
https://www.jianshu.com/p/f7a7a8765294
7:使用EasyRefresh的時候裡面的組件會重新創建,請確保這點
8:父組件調用子組件相關的方法?https://github.com/flutter-cn/flutter_cookbook/tree/master/examples/stateful_communication
9:Flutter 修改圖標、應用名稱、包名等?https://blog.csdn.net/weixin_33730836/article/details/87039268
10:Flutter使用ListView控制項注意事項:ListView具有緩存功能
ListView嵌套ListView當ListView內容長度大於屏幕ListView照樣還具有緩存功能
滑動到底部的時候會重新構建孩子
new ListView(children:[
new Card(
child: new ListView(physics: new NeverScrollableScrollPhysics(),
shrinkWrap: true,
children: [
new TemplateAttWidget(
entity.getForm(),
mMajorMinorIDList[0],
mMajorMinorIDList[1],
id: mMajorMinorIDList[2],
mEditable: false,
),
createKeyTemplateWidget(),
createDuplicateDocWidget(),
])),
new Card(child: new MessageStepperWidget(mListContent: widget.item.getComments(),)),
new TemplateBtnWidget(
mId: widget.item.getProcessDefinitionId(),
mSfromKey: widget.item.getFormKey(),
initPara: mChildUniversalInitPara,
mTableItemData: mChildrenItem,),
],)
解決辦法?
用SingleChildScrollView去解決這個問題
Widget build(BuildContext context)
{
Widget body = SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children:[
new Card(
child: new ListView(physics: new NeverScrollableScrollPhysics(),
shrinkWrap: true,
children: [
new TemplateAttWidget(
entity.getForm(),
mMajorMinorIDList[0],
mMajorMinorIDList[1],
id: mMajorMinorIDList[2],
mEditable: false,
),
createKeyTemplateWidget(),
createDuplicateDocWidget(),
])),
new Card(child: new MessageStepperWidget(mListContent: widget.item.getComments(),)),
new TemplateBtnWidget(
mId: widget.item.getProcessDefinitionId(),
mSfromKey: widget.item.getFormKey(),
initPara: mChildUniversalInitPara,
mTableItemData: mChildrenItem,),
],
),
);
return buildBody(context, body);
}
11:Flutter集成IOS代碼遇到的問題?
在/Users/zcj/D/work_zbcx/Flutter/code/test/flutter_des/ios 目錄下 flutter_des.podspec修改
在/Users/zcj/D/work_zbcx/Flutter/code/test/flutter_des/example/ios 目錄下Podfile.lock需要刪除
重新pod install
12:如何引用github上的代碼?
flutter_des:
git:
url: git://github.com/zxylovewl1/flutter_des.git
13:從A跳轉到B的時候A會發生重繪。
1:A界面不會重繪
2:A界面的子組件會發生重繪走AttWidgetState====build
3:A界面的子組件的子組件會發生重繪走initState======和build函數
4:解決辦法:導致的原因是因為GlobalKey的原因
14:更新mac系統:
1,可能需要執行flutter upgrade更新flutter庫
2,可能需要更新cocopod 報錯:
/usr/local/bin/pod: /usr/local/Cellar/cocoapods/1.6.1/libexec/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory
地址:https://www.jianshu.com/p/3c57efd84cc4
15:zsh: command not found: flutter?博客地址:https://www.jianshu.com/p/e585369c1a65
16:flutter-1.15版本:不能刪除.iml文件,cached_network_image更新版本需要更新,yaml中使用git報錯,高德地圖生產定位問題崩潰問題
17:https://blog.csdn.net/qq_39420519/article/details/104002860
18:Execution failed for task ':image_jpeg:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
統一編譯版本:修改成28
地址:https://blog.csdn.net/qq_39910762/article/details/85003006
19:籤名文件配置修改後
signingConfigs {
release {
keyAlias 'key'
keyPassword 'zgis123'
// storeFile file('D:/01Code/Key.store')
storeFile file('/Users/zcj/E/Key.store')
storePassword 'zgis123'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
20:如果是double類型的字符串轉換成int類型不成功:
舉例: int.parse(15.0) 解決辦法:double.parse(15.0);
21:StatelessWidget和StatefulWidget區別?
1:setState的時候StatelessWidget不更新
22:在生成期間不能調用setState方法比如在build裡面正在生成widget的時候不能調用setState
舉例: DropdownMenu(onChanged: (layer)
{
refreshAttWidget(layer);
},),
void refreshAttWidget(layer)
{
setState(()
{
mEmptyView = AttIsMCardEditWidget(
mMajor, mMinor, plugin: new Plugin(), attState: 0, key: key_btn_border);
});
}
23:未被setState的key還是為空
舉例: mEmptyView = AttIsMCardEditWidget(
mMajor, mMinor, plugin: new Plugin(), attState: 0, key: key_btn_border);
如果沒有調用setState這個key_btn_border還是為空
24:環境搭建文件夾的名稱不能起flutter這個名稱
25:在父widget中調用setState,子widget的didUpdateWidget就一定會被調用,不管父widget傳遞給子widget構造方法的參數有沒有改變,父組件的didUpdateWidget不會被調用
26:解決flutter依賴第三方庫打包aar?
1:使用fat-aar進行合併 https://blog.csdn.net/jacksinrow/article/details/105036286
2:將第三方庫依賴的庫打包成aar
3:flutter打包aar的時候依賴第三方庫的dart代碼已經打包進去了,就是原生代碼沒打進去,需要打成aar文件
27:如果sharedPreferences異步返回的是void對象則可以不用管,但是要給一個值比如:下面的value
SPUtil.init().then((sharedPreferences)=>sharedPreferences.reload()).then((value)
28: double類型保留2位小數點
doubleA.toStringAsFixed(2)
29:在外面使用map直接產生的對象是dynamic類型舉例: Map map = {'uicfg': {
}}
_InternalLinkedHashMap
2:如果是Map map = {'uicfg': {『test『:true }}
_InternalLinkedHashMap
3:如果是Map map = {'uicfg': {『test『:true,'test2':[]}}
_InternalLinkedHashMap
解決方案:
Map map ={'uicfg': {}}
30:aar如果接入進android原生報錯:是so的錯誤 則清理下項目重新啟動此項目
31:第三方版本的更新ios打包會不成功
解決辦法:重新生成一個demo,在ios上可以打包,然後替換原來的打包不成功的ios目錄
32:EventChannel使用場景:
獲取電池電量的demo為例,手機的電池狀態是不停變化的。我們要把這樣的電池狀態變化由Native及時通過EventChannel來告訴Flutter。這種情況用之前講的MethodChannel辦法是不行的,這意味著Flutter需要用輪詢的方式不停調用getBatteryLevel來獲取當前電量,顯然是不正確的做法。而用EventChannel的方式,則是將當前電池狀態"推送"給Flutter.
33:解決視頻查看問題:報錯:No Network Security Config specified, using platform default
修改:targetSdkVersion 27
34:MethodChannel(flutter主動調用原生代碼,native與flutter之間互相發送數據的通信方式)、EventChannel(主動調用flutter代碼,單向通信方式) 以及 BasicMessageChannel(雙向通信)https://mobile.51cto.com/ahot-598367.htm
35:ios混合打包報錯解決方案:
generated from Xcode Archive or Install build for a rchitecture arm64
clang: error: linker command failed with exit code 1 (use -V to see invocation)
地址:https://www.jianshu.com/p/8eff48e5c010
Hello,夥伴們
長按二維碼關注我們吧!
視頻地址:
https://space.bilibili.com/297978042?spm_id_from=333.788.b_765f7570696e666f.1
Hello,夥伴們
長按二維碼關注我們吧!
git碼雲地址:
https://gitee.com/zhengchaojun
Hello,夥伴們
長按二維碼關注我們吧!
github倉庫地址:
https://github.com/zxylovewl1
Hello,夥伴們
長按二維碼關注我們吧!