Flutter 報(bào)錯(cuò)總結(jié)

  • github 上 clone 下來的項(xiàng)目報(bào)錯(cuò)/找不到文件?
    1、倉庫 clone 下來后我們執(zhí)行flutter run Terminal 中提示我們 Target file "lib/main.dart" not found.這時(shí)我們要判斷打開示例項(xiàng)目的路徑對不對驹止,對帶有示例的倉庫钞诡,我們?nèi)绻蜷_演示示例兼贡,需要用 vscode打開示例所在的文件夾,一般是 example 文件夾
    2丈攒、在我們使用正確的路徑打開項(xiàng)目后,有很多報(bào)錯(cuò)導(dǎo)入的文件找不到授霸,這個(gè)時(shí)候我們需要在 Terminal 中 執(zhí)行以下flutter pub get 命令巡验,執(zhí)行完導(dǎo)入的一些庫就能夠找到了

  • Terminal 中提示 [!] Your app isn't using AndroidX.
    這種情況需要我們在 android/gradle.properties文件中設(shè)置

android.enableJetifier=true
android.useAndroidX=true

gradle 版本不對

  • Terminal 中報(bào)錯(cuò) Minimum supported Gradle version is 5.4.1. Current version is 4.10.2. If using the gradle wrapper, try editing the distributionUrl in /Users/zhangjiwen/Desktop/flutter_k_chart/example/android/gradle/wrapper/gradle-wrapper.properties to gradle-5.4.1-all.zip
    解決辦法是:我們在android/gradle/wrapper/gradle-wrapper.properties中將distributionUrl中的 gradle zip 包改成我們需要的版本。
    例如:沒改之前是distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 修改后: distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
  • Terminal 中報(bào)Exception in thread "main" java.util.zip.ZipException: zip END header not found
    這個(gè)錯(cuò)也是 gradle版本不對造成的,將 android -> gradle -> wrapper -> gradlewrapper.properties文件中的 distributionUrl=https://services.gradle.org/distributions/gradle-4.10.2-all.zip中的 gradle-4.10.2-all.zip 改為與 Flutter 對應(yīng)的版本既可

NoSuchMethodError 總結(jié)

  • NoSuchMethodError: The method '***' was called on null
    在新增 Provider 狀態(tài)管理之后,我們需要執(zhí)行flutter run 碘耳,如果使用熱重載的話Termianl中就會報(bào)上面的錯(cuò)誤
  • NoSuchMethodError: The method '/' was called on null
    盡管在某些頁面設(shè)置過了 ScreenUtil.instance 但是切換都某些頁面的時(shí)候還是報(bào)了這個(gè)錯(cuò)显设,這就需要我們在報(bào)錯(cuò)的頁面也設(shè)置一下ScreenUtil.instance

Flutter 模擬器 加載網(wǎng)絡(luò)資源加載不出來的問題

  • 需要我們在 DNS 上新加一個(gè) 8.8.8.8

Container 不能同時(shí)設(shè)置color和 decoration,同時(shí)設(shè)置會報(bào)錯(cuò)Cannot provide both a color and a decoration ,the color argument is just a shorthand for 'decoration: new BoxDecotation(color: color)'

模擬器加載不出來網(wǎng)絡(luò)圖片

  • 模擬器加載不出來網(wǎng)絡(luò)圖片的表現(xiàn)就是網(wǎng)絡(luò)圖片不顯示辛辨,頁面點(diǎn)擊沒反應(yīng)捕捂,這個(gè)時(shí)候我們需要新增一個(gè)DNS: 8.8.8.8 就好了

網(wǎng)絡(luò)請求的錯(cuò)誤

  • 在使用dio進(jìn)行網(wǎng)絡(luò)請求的時(shí)候出現(xiàn) FormatException: Unexpected character (at character 1) 報(bào)錯(cuò),因?yàn)閐io請求返回的數(shù)據(jù)默認(rèn)是以json的格式讀取的,而返回的數(shù)據(jù)是密文形式斗搞,需要根據(jù)接口設(shè)置設(shè)置dio.options.responseType绞蹦,這里設(shè)置為dio.options.responseType = ResponseType.plain;就好了

數(shù)據(jù)解析錯(cuò)誤

  • Exception has occurred. _TypeError (type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>') 這里提示我們接口返回給我們一個(gè)list,但我們以Map去處理了

使用 Provider 報(bào) Tried to listen to a value exposed with provider, from outside of the widget tree 錯(cuò)

在使用Provider提供的 Provider.of<*****>(context,listen: false).xxxxxxx(); 獲取共享對象時(shí),listen 參數(shù)一定要使用false榜旦,否則就會報(bào)上面的錯(cuò)誤幽七,如果這里不適用。該方法的listen參數(shù)默認(rèn)是true; static T of<T>(BuildContext context, {bool listen = true})

這里需要注意的是:在我們使用Provider.of修改值的時(shí)候listen參數(shù)需要設(shè)置為false溅呢;當(dāng)我們使用Provider.of獲取值的時(shí)候listen參數(shù)需要設(shè)置為true澡屡;listen參數(shù)到底是使用true還是使用false取決與猿挚,當(dāng)取的值變化的時(shí)候控件要不要更新。

VSCode 運(yùn)行flutter項(xiàng)目報(bào)Building for iOS Simulator, but the linked and embedded framework 'App.framework' 的錯(cuò)

  • 使用xcode 打開flutter 下的iOS項(xiàng)目找到App.framework 刪除驶鹉,清理緩存绩蜻,重新用xcode編譯就行了

調(diào)用Cupertino樣式警告框報(bào)錯(cuò)

  • 使用CupertinoAlertDialog在安卓上報(bào)The following NoSuchMethodError was thrown building LayoutBuilder: The getter alterDialogLabel was called on null 的錯(cuò)
  • 解決: 在MaterialApp 的 localizationsDelegates 屬性中添加 FallbackCupertinoLocalisationsDelegate() 項(xiàng),F(xiàn)allbackCupertinoLocalisationsDelegate代碼如下:
MaterialApp(
          ......
          localizationsDelegates: [
            FallbackCupertinoLocalisationsDelegate(),
          ],
          ......
)
import 'package:flutter/cupertino.dart';

class FallbackCupertinoLocalisationsDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
  const FallbackCupertinoLocalisationsDelegate();
 
  @override
  bool isSupported(Locale locale) => true;
 
  @override
  Future<CupertinoLocalizations> load(Locale locale) =>
      DefaultCupertinoLocalizations.load(locale);
 
  @override
  bool shouldReload(FallbackCupertinoLocalisationsDelegate old) => false;
}

運(yùn)行安卓模擬器報(bào)A problem occurred configuring project ':path_provider'. > Could not resolve all artifacts for configuration ':path_provider:classpath'.

  • 完整報(bào)錯(cuò)信息如下:
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':path_provider'.
> Could not resolve all artifacts for configuration ':path_provider:classpath'.
> Could not resolve com.android.tools.build:gradle:3.3.0\.
Required by:
project :path_provider
> Could not resolve com.android.tools.build:gradle:3.3.0\.
> Could not get resource '[https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom](https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom)'.
> Could not GET '[https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom](https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom)'.
> Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused (Connection refused)
> Could not resolve com.android.tools.build:gradle:3.3.0\.
> Could not get resource '[https://jcenter.bintray.com/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom](https://jcenter.bintray.com/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom)'.
> Could not GET '[https://jcenter.bintray.com/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom](https://jcenter.bintray.com/com/android/tools/build/gradle/3.3.0/gradle-3.3.0.pom)'.
> Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused (Connection refused)
> Could not get unknown property 'android' for project ':path_provider' of type org.gradle.api.Project.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at [https://help.gradle.org](https://help.gradle.org)
  • 解決過程:
    1室埋、首先办绝,我以為是安卓模擬器的問題,我就用安卓模擬器運(yùn)行之前其他的項(xiàng)目沒結(jié)果完美運(yùn)行姚淆,沒有任何問題孕蝉。
    2、既然不是安卓模擬器的問題腌逢,那么應(yīng)該就是我們代碼里配置的原因降淮,然后我就分析報(bào)錯(cuò)原因,既然報(bào)錯(cuò)是跟path_provider相關(guān)搏讶,那么我就去搜path_provider相關(guān)的東西佳鳖,發(fā)現(xiàn)我們的pubspec.ymal文件中并沒有導(dǎo)入path_provider的庫,但是pubspec.lock文件中確有這個(gè)庫媒惕。然后我在網(wǎng)上搜跟path_provider相關(guān)的報(bào)錯(cuò)原因系吩,千奇百怪,各種答案嘗試后還是解決不了問題妒蔚。然后報(bào)錯(cuò)信息還有跟gradle相關(guān)的淑玫,然后我又搜報(bào)錯(cuò)的gradle的信息,各種答案也是解決不了面睛,然后我在想是不是墻的原因絮蒿,然后我代理打開,依舊不行叁鉴,然后我又想到去用阿里云的鏡像土涝,然后還是不行,我有點(diǎn)泄氣了幌墓。目光重新回到path_provider
    3但壮、目光重新回到path_provider上,這時(shí)我想到是不是pub沒有找到合適的版本常侣,因?yàn)槲覀円氲娜綆斓陌姹咎柖际菍懰赖睦敲次揖桶阉幸氲膸旄某砂姹究勺兊模缓笾匦逻\(yùn)行還是報(bào)錯(cuò)胳施。
    5溯祸、然后我查了一下這個(gè)庫是干什么用的,大概是用來做本地存儲的,我就分析了我們引入的庫里面有沒有需要使用到本地存儲的焦辅。然后發(fā)現(xiàn)我們引入了一個(gè)叫cached_network_image的庫用來做圖片緩存博杖,既然緩存肯定涉及到本地?cái)?shù)據(jù)的操作。
    6筷登、我將pubspec.ymal文件中導(dǎo)入cached_network_image的代碼給注釋掉剃根,代碼中用到cached_network_image的代碼都注釋,然后刪除app前方,重新運(yùn)行狈醉,結(jié)果沒錯(cuò)了,安卓模擬器運(yùn)行起來了惠险。這時(shí)我確定應(yīng)該是cached_network_image中引用了path_provider庫導(dǎo)致的苗傅。
    7、刪除cached_network_image庫后莺匠,我發(fā)現(xiàn)之前編譯產(chǎn)生的.flutter-plugins 和 .flutter-plugins-dependencies文件也沒有了金吗。
    8十兢、這個(gè)時(shí)候我又想趣竣,為什么安卓同事的為什么可以運(yùn)行呢?我猜是他們使用的flutter 版本和dart版本有可能跟我的不一樣導(dǎo)致的旱物,然后我去查看了他們的flutter 版本和dart sdk版本遥缕,結(jié)果我們使用的版本是一樣的。這就很好奇了宵呛,同樣的代碼他們沒問題单匣,我這邊確有問題。那到底問題出在哪里宝穗?
    9户秤、第二天我想總結(jié)一下昨天遇到的問題,然后就把昨天注釋掉的cached_network_image庫重新導(dǎo)入逮矛,然后刪除app重新運(yùn)行鸡号,我滿心期待報(bào)錯(cuò)信息的出現(xiàn),結(jié)果须鼎,我靠安卓模擬器啟動了鲸伴,我靠,又正常了晋控,真TM太神奇了汞窗,我也懵了,不知道問題到底出在哪里了赡译。

控制臺輸出setState() or markNeedsBuild() called during build.提示

The following assertion was thrown while dispatching notifications for TradeProvider:
flutter: setState() or markNeedsBuild() called during build.
flutter: This _DefaultInheritedProviderScope<TradeProvider> widget cannot be marked as needing to build
flutter: because the framework is already in the process of building widgets.  A widget can be marked as
flutter: needing to be built during the build phase only if one of its ancestors is currently building. This
flutter: exception is allowed because the framework builds parent widgets before children, which means a
flutter: dirty descendant will always be built. Otherwise, the framework might not visit this widget during
flutter: this build phase.
flutter: The widget on which setState() or markNeedsBuild() was called was:
flutter:   _DefaultInheritedProviderScope<TradeProvider>
flutter: The widget which was currently being built when the offending call was made was:
flutter:   Builder
  • 這里是我們在initstatus方法中直接或間接的調(diào)用了setStatus導(dǎo)致的仲吏,出現(xiàn)這種問題是要修改掉了,因?yàn)閕nit的時(shí)候還沒執(zhí)行build方法,第一次執(zhí)行build應(yīng)有系統(tǒng)去調(diào)用的蜘矢。
  • 安卓模擬器打不開圖片請使用:8.8.8.8
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狂男,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子品腹,更是在濱河造成了極大的恐慌岖食,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舞吭,死亡現(xiàn)場離奇詭異泡垃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羡鸥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蔑穴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惧浴,你說我怎么就攤上這事存和。” “怎么了衷旅?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵捐腿,是天一觀的道長。 經(jīng)常有香客問我柿顶,道長茄袖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任嘁锯,我火速辦了婚禮宪祥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘家乘。我一直安慰自己蝗羊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布仁锯。 她就那樣靜靜地躺著耀找,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扑馁。 梳的紋絲不亂的頭發(fā)上涯呻,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音腻要,去河邊找鬼复罐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛雄家,可吹牛的內(nèi)容都是我干的效诅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乱投!你這毒婦竟也來了咽笼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤戚炫,失蹤者是張志新(化名)和其女友劉穎剑刑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體双肤,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡施掏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茅糜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片七芭。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔑赘,靈堂內(nèi)的尸體忽然破棺而出狸驳,到底是詐尸還是另有隱情,我是刑警寧澤缩赛,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布耙箍,位于F島的核電站,受9級特大地震影響峦筒,放射性物質(zhì)發(fā)生泄漏究西。R本人自食惡果不足惜窗慎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一物喷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遮斥,春花似錦峦失、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至较屿,卻和暖如春隧魄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隘蝎。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工购啄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘱么。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓狮含,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子几迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容