flutter運(yùn)行之后報(bào)了這個(gè)錯(cuò),不能夠運(yùn)行。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),興縣企業(yè)網(wǎng)站建設(shè),興縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,興縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,興縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
在結(jié)果上面會(huì)提示appt2等錯(cuò)誤,其實(shí)錯(cuò)誤的原因是Androidx支持有問(wèn)題。
官方解決辦法: (合理打開(kāi))
app/build.gradle 下面
在gradle.properties下添加:
重新清理運(yùn)行,ok。
最近寫(xiě)了一個(gè)LoadingView用于頁(yè)面的網(wǎng)絡(luò)加載,使用的是StatefulWidget。由于項(xiàng)目是使用的Get對(duì)狀態(tài)進(jìn)行控制的,所以在GetBuild中對(duì)Loading進(jìn)行刷新。但在使用中發(fā)現(xiàn)rebuild LoadingView沒(méi)有刷新?tīng)顟B(tài),看參數(shù)是在Widget中更新了的。
后續(xù)定位發(fā)現(xiàn),StatefulWidget在rebuild的時(shí)候,并不會(huì)重新執(zhí)行initState方法,而只會(huì)執(zhí)行build方法,這也符合state和widget的一對(duì)多原則。知道問(wèn)題所在,修改也非常簡(jiǎn)單。去掉state中的status變量,使用widget中的initStatus值即可。
在此記錄,對(duì)于Get的一些注意點(diǎn)。
目前項(xiàng)目中對(duì)Widget進(jìn)行了內(nèi)嵌LoadingView的BaseWidget封裝,對(duì)GetxController進(jìn)行了LoadingStatus狀態(tài)操作的BaseController封裝。發(fā)現(xiàn)在第二個(gè)繼承了BaseWidget的頁(yè)面中,對(duì)綁定的Controller進(jìn)行update操作無(wú)效。
閱讀源碼后發(fā)現(xiàn),GetBuilder的global參數(shù)默認(rèn)是true,在沒(méi)有指定tag的情況下,會(huì)根據(jù)controller作為key進(jìn)行全局map,若第二次調(diào)用時(shí),會(huì)先通過(guò)Controller進(jìn)行g(shù)et,正好我們的BaseWidget使用的是BaseController導(dǎo)致全局只有一個(gè)Controller從而導(dǎo)致第二個(gè)頁(yè)面無(wú)法刷新問(wèn)題。我們只需要在基類(lèi)中將global改為false,直接使用init的controller即可。
目前在做App的主題色切換功能,發(fā)現(xiàn)在部分主題色下,Appbar的標(biāo)題和Action自動(dòng)變成深色,查閱資料后得知,由于色值的computeLuminance值過(guò)大導(dǎo)致Brightness自動(dòng)為Brightness.light。
知道原因后就好辦了,通過(guò)設(shè)置ThemeData里面的Brightness類(lèi)型的參數(shù)為Brightness.dark(注意我們只需要Appbar為深色,brightness參數(shù)控制的是整個(gè)頁(yè)面,不修改)。經(jīng)驗(yàn)證,primaryColorBrightness控制Appbar的標(biāo)題和action,修改即可。
問(wèn)題原因:版本大小原因
解決方案:點(diǎn)擊ios文件夾-點(diǎn)擊podfile修改如下(親測(cè)實(shí)用已解決)
解決方案:
刪除IOS工程中的Podfile.lock文件,重新pod install(繼續(xù)執(zhí)行Flutter run操作)即可解決。
問(wèn)題原因:沒(méi)有配置safety相關(guān)
解決方案:可以直接在命令行中執(zhí)行:
然后在Additional run args 這行鍵入一下命令即可。
問(wèn)題原因:xcode版本更新導(dǎo)致的
解決方案:將爆紅處一行隱藏,運(yùn)行,點(diǎn)擊fix即可,會(huì)顯示正確位置就解決了。
解決方法:
1、找到第一個(gè)爆紅文件,將311行問(wèn)號(hào)后面的Colors.white刪除即可
2、 在相同的文件夾內(nèi)找到第二個(gè)爆紅文件,找到106行,刪除super.addAllowedPoint這一行即可。
造成原因分析:還不清楚
群友幫助:經(jīng)常出現(xiàn),重啟電腦多試試
解決方案:暫未找到
brew 安裝方式
通過(guò)gradle -v查看版本
在項(xiàng)目中的android/gradle/wrapper/gradle-wrapper.properties修改:
在andriod/build.gradle中找到buildscript并更新為新一點(diǎn);
(在Andriod Studio 中會(huì)有提示適合的版本)
在android/build.gradle中添加阿里云的鏡像地址:
如果有用到其他的源請(qǐng)自行添加;
附上查詢(xún)阿里云源的鏡像地址
在android/app/build.gradle中修改compileSdkVersion:
(flutter run 后如果不適合會(huì)提示)
升級(jí)Flutter后, 最好(能不動(dòng)就不動(dòng)) 把需要的pub全部升級(jí)到最新
方法是去 找到對(duì)應(yīng)包的最新版本
然后更新:flutter pub get
tips:非必要真別升級(jí),切記!切記!
如有用煩請(qǐng)看官點(diǎn)個(gè)贊
如有疑問(wèn)可留言,會(huì)盡快的回復(fù)您
問(wèn)題描述:
Mac環(huán)境,安裝了Android Studio,以及包括Dart插件在內(nèi)的Flutter插件。在終端運(yùn)行 flutter doctor ,顯示全部配置完成。在Android Studio中創(chuàng)建一個(gè)Flutter的新項(xiàng)目,包括運(yùn)行什么的都完全沒(méi)問(wèn)題。但是,我從Git上克隆自己的項(xiàng)目,用Android Studio打開(kāi)以后,有個(gè)警告“dart sdk is not configured”,并且沒(méi)有Flutter Device Selection按鈕,項(xiàng)目無(wú)法繼續(xù)進(jìn)行。
解決方法:
在網(wǎng)上找到的方法,都是這個(gè):
1、打開(kāi)File =》Setting =》Language Frameworks = Dart
2、勾選 “enable Dart support for the project”,并且選擇Dart SDK path,路徑為 D:\install\android\flutter\bin\cache\dart-sdk ,其中D:\install\android\flutter是flutter SDK路徑
其實(shí)是對(duì)的,這就是解決方法。但是我的Android Studio是3.4.2版本的,我打開(kāi)File是找不到Setting選項(xiàng)的。。??旖萱I(ctrl + alt + s)也沒(méi)反應(yīng)。
開(kāi)頭入口被堵死了,便想著更新一下Flutter (終端運(yùn)行 flutter upgrade ), 以獲取最新版本的Flutter和Dart SDK, 結(jié)果終端毫不留情的直接給了我一段error。于是,經(jīng)過(guò)一番耐心的查找,終于找到了三個(gè)入口:
入口一:
入口二:
打開(kāi)Tools =》Flutter =》Flutter Upgrade =》Language Frameworks = Dart
入口三:
Preferences =》Language Frameworks = Dart
然后操作即可:
在此之前先推薦看大佬的: 填坑指導(dǎo)
iOS需要注意:
1、flutter2.0要求cocoapods 升級(jí)到1.9.0
詳情看這篇博客
2、原來(lái)flutter項(xiàng)目中的podfile文件是舊版本的ccocoapods了,刪除podfile和對(duì)應(yīng)的.lock,然后flutter項(xiàng)目重新運(yùn)行使用它自動(dòng)生成的podfile文件
3、安裝CocoaPods
卸載cocoapods:sudo gem uninstall cocoapods
查看cocoapods版本:pod --version
指定版本安裝:
sudo gem install -n /usr/local/bin cocoapods -v 1.9.3(新MacOS系統(tǒng)升級(jí))
不指定版本安裝
sudo gem install -n /usr/local/bin cocoapods
說(shuō)明 :老項(xiàng)目sdk1.17.0===升級(jí)到2.0.1,當(dāng)前所有操作基于win平臺(tái)
到此為止環(huán)境已經(jīng)準(zhǔn)備妥當(dāng),正式進(jìn)入項(xiàng)目修改。
所有的插件都要適配到空安全,插件是否支持均會(huì)有對(duì)應(yīng)說(shuō)明Null safety,適配過(guò)程不確定版本的話(huà),可以使用dio: any,適配完事后再在pubspec.lock文件中查看具體的版本修改過(guò)來(lái),實(shí)在有部分插件沒(méi)有支持的,參考下面
部分插件在適配空安全的版本放棄維護(hù)了,得自行更新或?qū)ふ姨娲?,如?flutter_swiper 變?yōu)?flutter_swiper_null_safety ,插件更新后要注意項(xiàng)目中的用法是否需要更新
2.1.1: 以前采用的是 provide 插件共享全局?jǐn)?shù)據(jù),現(xiàn)在變化為 provider ,用法改變, 點(diǎn)擊參考 ,以防文章丟失,我重復(fù)一遍:
比如:
2.1.2: dio版本升級(jí)到4.0.0最新版后,部分用法改變
2.2.1
2.2.2
解決方案:
2.2.3
解決方案:
2.2.4
解決方案:
2.2.5
解決方案:
2.2.6
解決方案:
2.2.7
解決方案:
2.2.8
解決方案: child 換為sliver
2.2.8.1
解決方案: 項(xiàng)目目錄下: android--app-build.gradle --minSdkVersion改為:18 或者19
2.2.8.2
解決方案: 在pubspec.yarm管理里面添加:publish_to
2.2.8.3
解決方案: video_player升級(jí)后字段發(fā)生了變化,initialized字段更換為:isInitialized(_controller.value.isInitialized)
2.2.8.4
解決方案:
2.2.8.5
解決方案:
2.2.8.6
解決方案: 方案一:刪除ios目錄下的Podfile.lock 文件然后重新運(yùn)行 pod install命令
方案二:刪除ios目錄下的Podfile.lock與Podfile文件 重新運(yùn)行flutter run或flutter build ios
方案三:刪除ios目錄,重新運(yùn)行 flutter create . 命令,注意有"."這個(gè)符號(hào)不要忘記
2.2.8.7
這個(gè)報(bào)錯(cuò)一般對(duì)應(yīng)的就是下面的報(bào)錯(cuò),注意看后面的報(bào)錯(cuò)信息,看是哪個(gè)插件報(bào)錯(cuò)。
解決方案: 把Podfile的版本注釋打開(kāi),改為platform :ios, '9.0' 或者是更高的版本
全局替換
1.將new List() 替換為[];
2.TextField的inputFormatters:[WhitelistingTextInputFormatter.digitsOnly] 替換為[FilteringTextInputFormatter.digitsOnly]
3.TextField的inputFormatters:[WhitelistingTextInputFormatter(RegExp("[a-z|A-Z|0-9]"))]替換為FilteringTextInputFormatter.allow(RegExp("[a-z|A-Z|0-9]"))
4.Stack組件中overflow: Overflow.visible改為 clipBehavior: Clip.none;overflow: Overflow.clip改為clipBehavior:Clip.hardEdge
5.ListWheelScrollView組件中clipToSize = false改為clipBehavior: Clip.none,clipToSize = true改為 Clip.hardEdge
6.TextField中maxLengthEnforced: true改為maxLengthEnforcement:MaxLengthEnforcement.enforced
7.FlatButton、RaisedButton、OutlineButton的變化: 官方參考
顏色的屬性發(fā)生了變化,由原來(lái)的Color 變?yōu)榱薓aterialStatePropertyColor, 這是未了解決不同狀態(tài)(pressed、hovered、focused、disabled)下按鈕顏色的變化
例如
8.出現(xiàn)如下警告
9.showSnackBar報(bào)錯(cuò)誤
解決方案: Scaffold換為ScaffoldMessenger
10.textSelectionColor棄用
解決方案:
11.charts_flutter升級(jí)后屬性報(bào)錯(cuò)
解決方案:
12.flutter 真機(jī)調(diào)試無(wú)法訪問(wèn)網(wǎng)絡(luò),dio報(bào)錯(cuò)
解決方案:
android:
ios:
問(wèn)題12完整參考