在此之前先推薦看大佬的: 填坑指導(dǎo)

站在用戶的角度思考問題,與客戶深入溝通,找到青島網(wǎng)站設(shè)計與青島網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋青島地區(qū)。
iOS需要注意:
1、flutter2.0要求cocoapods 升級到1.9.0
詳情看這篇博客
2、原來flutter項目中的podfile文件是舊版本的ccocoapods了,刪除podfile和對應(yīng)的.lock,然后flutter項目重新運(yùn)行使用它自動生成的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)升級)
不指定版本安裝
sudo gem install -n /usr/local/bin cocoapods
說明 :老項目sdk1.17.0===升級到2.0.1,當(dāng)前所有操作基于win平臺
到此為止環(huán)境已經(jīng)準(zhǔn)備妥當(dāng),正式進(jìn)入項目修改。
所有的插件都要適配到空安全,插件是否支持均會有對應(yīng)說明Null safety,適配過程不確定版本的話,可以使用dio: any,適配完事后再在pubspec.lock文件中查看具體的版本修改過來,實在有部分插件沒有支持的,參考下面
部分插件在適配空安全的版本放棄維護(hù)了,得自行更新或?qū)ふ姨娲纾?flutter_swiper 變?yōu)?flutter_swiper_null_safety ,插件更新后要注意項目中的用法是否需要更新
2.1.1: 以前采用的是 provide 插件共享全局?jǐn)?shù)據(jù),現(xiàn)在變化為 provider ,用法改變, 點擊參考 ,以防文章丟失,我重復(fù)一遍:
比如:
2.1.2: dio版本升級到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
解決方案: 項目目錄下: android--app-build.gradle --minSdkVersion改為:18 或者19
2.2.8.2
解決方案: 在pubspec.yarm管理里面添加:publish_to
2.2.8.3
解決方案: video_player升級后字段發(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 . 命令,注意有"."這個符號不要忘記
2.2.8.7
這個報錯一般對應(yīng)的就是下面的報錯,注意看后面的報錯信息,看是哪個插件報錯。
解決方案: 把Podfile的版本注釋打開,改為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ā)生了變化,由原來的Color 變?yōu)榱薓aterialStatePropertyColor, 這是未了解決不同狀態(tài)(pressed、hovered、focused、disabled)下按鈕顏色的變化
例如
8.出現(xiàn)如下警告
9.showSnackBar報錯誤
解決方案: Scaffold換為ScaffoldMessenger
10.textSelectionColor棄用
解決方案:
11.charts_flutter升級后屬性報錯
解決方案:
12.flutter 真機(jī)調(diào)試無法訪問網(wǎng)絡(luò),dio報錯
解決方案:
android:
ios:
問題12完整參考
相對于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個頁面設(shè)計都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應(yīng)該如何去布局,我覺得不現(xiàn)實,大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項目中的一個頁面,來一步一步的拆解布局的流程。整個過程,基本上按照拆解、組件封裝、具體布局這三步來的。
根據(jù)設(shè)計圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因為涉及到疊加,因此考慮用Stack;
系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個contanier,無須指定位置,全視圖擴(kuò)展;載放logo圖標(biāo)在上一層,用Image。最后兩個Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。
登錄內(nèi)容模塊是最外層是一個Contanier容器,去控制背景色和圓角。然后是一個Column元素,逐行排列。
第一行為Image,
第二行為Text,
第三行可以看成一個小Column,分兩塊進(jìn)行布局
第四行可以看成一個小Column,分兩塊進(jìn)行布局
第五行可以看作一個TextButton,
第六行可以看作一個Row,分三塊進(jìn)行布局
通過上面這樣一步一步的分析后,基本上對大致的布局有了一個了解,最外層的控件大致選對(只要能實現(xiàn)的話,就是復(fù)雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復(fù)的或者覺得可以封裝出來的部分,則進(jìn)行下一步。
每一行的拆解,大致也是按照這個思路來進(jìn)行,因此筆者在這里就不做講解了。
在做到第三第四行的時候,發(fā)現(xiàn)這兩個很相似,而且設(shè)計到一些交互邏輯,筆者就想對第三第四行的這種展示進(jìn)行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個控件。利用TextField來實現(xiàn)這種輸入操作,具體的實現(xiàn)筆者不再詳細(xì)的描述了。
經(jīng)過這一步,整體的規(guī)劃設(shè)計圖已經(jīng)有了,各個組件也都有了,接下來的工作就是組裝了。
具體布局設(shè)計到一些細(xì)節(jié)的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。
像第六行row是放在底部的,就可以在第六行前面增加一個Spacer()去填充空白區(qū)域。
對文字顏色大小等,可以用TextStyle直接設(shè)置。
對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。
1、升級依賴的插件版本pubspec.yaml(包括example),pub get 解決依賴沖突
2、pubspec.yaml所在路徑下執(zhí)行 dart pub upgrade --null-safety 檢查是否所在flutter工程依賴庫是否都升級到了空安全版本
example示例需要進(jìn)入example路徑下檢查
1、List默認(rèn)構(gòu)造方法刪除,改用[];
main.dart文件main方法第一行增加CustomFlutterBinding();
2、flutter clean,刪除所有 pubspec.lock文件 ,pub get
3、FutureOr報錯引入頭文件、import 'dart:async';
4、屬性用優(yōu)先用late 或者 ?聲明,在確定不為空情況才用!
問題原因:版本大小原因
解決方案:點擊ios文件夾-點擊podfile修改如下(親測實用已解決)
解決方案:
刪除IOS工程中的Podfile.lock文件,重新pod install(繼續(xù)執(zhí)行Flutter run操作)即可解決。
問題原因:沒有配置safety相關(guān)
解決方案:可以直接在命令行中執(zhí)行:
然后在Additional run args 這行鍵入一下命令即可。
問題原因:xcode版本更新導(dǎo)致的
解決方案:將爆紅處一行隱藏,運(yùn)行,點擊fix即可,會顯示正確位置就解決了。
解決方法:
1、找到第一個爆紅文件,將311行問號后面的Colors.white刪除即可
2、 在相同的文件夾內(nèi)找到第二個爆紅文件,找到106行,刪除super.addAllowedPoint這一行即可。
造成原因分析:還不清楚
群友幫助:經(jīng)常出現(xiàn),重啟電腦多試試
解決方案:暫未找到
如同iOS原生ListView的刪除風(fēng)格,列表項左滑,右側(cè)出現(xiàn)刪除按鈕。這里用了2個dart文件,實現(xiàn)這個功能。
(1) left_slide_actions.dart文件。
(2)main.dart文件。
文章題目:flutter刪除,flutter刪除元素
文章路徑:http://chinadenli.net/article13/dseopds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、Google、關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)