學習Flutter遇到的問題以及解決方案

2021-03-02 Flutter基礎框架插件式

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,夥伴們

長按二維碼關注我們吧!

相關焦點

  • 解決flutter最新版無法進行web開發問題的方案
    大家好,這裡是義縣遊學電子科技有限公司,今天我來跟大家分享一個flutter開發web的問題解決方案.最近谷歌發布了新版的flutter穩定版,解決了各項性能問題.但是當我用flutter最新測試版進行web開發時卻出現了報錯.
  • Flutter doctor 命令,解決Flutter開發環境疑難雜症,建議收藏
    如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。技術剛剛好經歷近幾年,移動端跨平臺開發技術層出不窮,從Facebook家的ReactNative,到阿里家WEEX,前端技術在移動端跨平臺開發中大展身手,技術剛剛好作為一名Android開發,經歷了從Reactjs到Vuejs的不斷學習。
  • 解決flutter運行報錯:flutter_tools depends的處理方法
    我是您的朋友義縣遊學電子科技.今天帶來的flutter的錯誤解決方法是關於web平臺運行時提示:"Because flutter_tools depends on shelf_packages_handler any which doesn't exist(could
  • Flutter 入門路線圖
    本文是為那些渴望開始學習 flutter 的人們而準備的,這是一個適合初學者從所有必要資源中逐步學習的路線圖。
  • Flutter官網例子學習教程 Material 組件 APP介紹
    如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。技術剛剛好經歷近幾年,移動端跨平臺開發技術層出不窮,從Facebook家的ReactNative,到阿里家WEEX,前端技術在移動端跨平臺開發中大展身手,技術剛剛好作為一名Android開發,經歷了從Reactjs到Vuejs的不斷學習。
  • Flutter 要起飛 , Flutter 1.12 正式發布回顧!
    比如當控制項出現了  overflowed ,我們可以很直觀的看到問題的根源並且進行調整。另外可以在  Layout Explorer 中動態調整控制項的 flex 等相關信息,實時預覽修改情況。Flutter SDK 相關的更新本次解決了 4,571 個報錯,合併了 1,905 份 pr,同時包含了許多的新功能支持。1.
  • Flutter Running Gradle task 'assembleDebug'解決方法
    前言最近用flutter做個app,當運行flutter run的時候,一直卡在這個地方動不了,如下圖:運行時會卡在Running 'gradle assembleDebug, 因為Gradle的Maven倉庫在國外, 可以使用阿里雲的鏡像地址。
  • Flutter Go首頁、文檔和下載 - Flutter 學習 App - OSCHINA
    flutter優點主要包括: 跨平臺 開源 Hot Reload、響應式框架、及其豐富的控制項以及開發工具 靈活的界面設計以及控制項組合 藉助可以移植的GPU加速的渲染引擎以及高性能ARM代碼運行時已達到高質量的用戶體驗Flutter Go 的由來 Flutter學習資料太少,對於英文不好的同學相對來說比較困難 官網文檔示例不夠健全,不夠直觀 各個 widget 的用法各異,屬性紛繁
  • Flutter加載網頁之官方webview_flutter講解
    前言最近在用flutter開發一個App,其中需要加載網頁,本來以為很簡單的一件事,卻遇到了不少坑,最後整整搞了一上午。對於加載網頁這個功能來說,flutter並沒有組件,反而是第三方開發了一些組件,目前比較常用的有二種: flutter_webview_plugin webview_flutterflutter_webview_plugin是目前用得最火的一種,也是比較好用的,但是它有個致命的缺點,它不支持「進入某個URL之前攔截」,這也是我放棄它的原因。
  • Mac版最詳細的Flutter開發環境搭建
    上周任務不多,閒來無事想學習一下flutt
  • 為什麼我們應該使用 Flutter? - CSDN
    作者 | 杜潔鵬責編 | 唐小引封圖 | Flutter GitHub README出品 | CSDN(ID:CSDNnews)Flutter 是 Google 提供的新一代跨平臺方案,隨著 Google 在 IO19 宣布 Flutter 支持 Web 平臺,就標誌著 Flutter 已經全面持所有平臺(目前 Windows
  • 為大家學習Flutter,阿里操碎了心
    本文轉載自公眾號  鴻洋國內在實踐Flutter
  • 義縣遊學電子科技:flutter-web設置meta標籤便於搜索採集的方法
    今天分享一個重磅的技術文章,對於很多用過flutter開發web的朋友一定非常熟悉了開發流程和頁面編寫.但是最終部署是不是會存在一些問題呢?義縣遊學電子科技在最後的部署階段就遇到一個問題,站點建好了怎麼設置seo呢,meta的標籤寫在哪裡呢?帶著這個問題義縣遊學電子科技今天就跟大家分享下自己的解決方法吧.
  • 使用Flutter一年後,這是我得到的經驗
    在這篇文章中,我將分享我使用 Flutter 的經驗,以及我在整個過程中發現的所有 Flutter 的優缺點。
  • Flutter狀態State的5種應對方法
    (), //This is where our page will go, ), ); }}Riverpod 文檔(https://riverpod.dev/)Riverpod 是 Remi Rousselet 創建的一個相當新的庫,也是他對自己另一個庫 provider(https://pub.dev/packages/provider)遇到的一些最常見問題的直接回應
  • Flutter 實戰4
    語言的學習先HelloWorld每個 app 都有一個 main() 函數。
  • 使用 Flutter 開發 Github 客戶端及學習歷程的小結
    第一周:初識Flutter最初學習Flutter的方式是通過學習 wendux 老師的 《Flutter實戰》:https://book.flutterchina.club/這是一本非常優秀的中文Flutter教程,對個人學習Flutter入門有非常大的幫助。
  • 探尋 JavaScript 精度問題以及解決方案
    閱讀完本文可以了解到 0.1+0.2 為什麼等於 0.30000000000000004 以及 JavaScript 中最大安全數是如何來的。
  • 【Flutter桌面篇】Flutter&Windows應用嘗鮮
    ---[·  git clone -b master https://github.com/flutter/flutter.git---[·  flutter --versionFlutter 1.20.0-3.0.pre.124 • channel master • https://github.com/flutter/
  • Android 軟鍵盤控制方法、以及開發中遇到的一些問題全套解決方案
    360開源全面插件化方案RePlugin—讓你像玩樂高一樣開發APPAndroid 提供了 windowSoftInputMode 屬性來控制輸入法軟鍵盤窗口和 Activity 主窗口的交互,分為 窗口尺寸調整系列 和 輸入法軟鍵盤顯示控制系列。