flutter坑,flutter難嗎

flutter 藍牙開發遇到的坑

flutter 藍牙開發遇到的坑

順昌網站制作公司哪家好,找成都創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、響應式網站建設等網站項目制作,到程序開發,運營維護。成都創新互聯公司自2013年創立以來到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯公司

最近在做個flutter藍牙功能,用的flutter_blue,在iOS上沒有任何問題,照著例子寫完,正常運行藍牙功能,但是在安卓上發現各種坑,用這個插件首先是有些設備拿不到設備名稱,還有就是讀寫特征和ios上拿到的也不一樣。折騰好久,最后在github上找到外國友人給出的方案,就是用flutter_bluetooth_serial這個插件可以解決以上問題,就試了一下,結果真可以解決問題,而且這個用法感覺比flutter_blue 更強大,不需要通過讀寫特征值進行通訊,直接就能通過connection寫入和接收數據。做下記錄,希望能幫到有同樣問題的人。因為我在遇到問題時,百度了全是不能解決問題的辦法。

win7安裝flutter踩的坑記錄

之前安裝flutter sdk已經安裝ok了,但是最近升級了一下flutter版本到1.26,發現崩了,記錄一下出的錯及解決方法。

提前已經安裝好android studio 及 android 環境

1,運行flutter_console,輸入flutter doctor 閃退問題

cmd閃退,放到PowerShell中執行,我是發現以下的錯誤

fix:PowerShell最低要求為5.0,

升級方案:

2:運行flutter doctor 無反應問題

第一種方案-檢查環境變量配置

第二種方案-fc

3:android studio創建flutter project時間比較長問題

運行flutter

報錯提示上看得執行flutter doctor --android-licenses

到此就可以正常執行了

Flutter踩坑之旅

記錄下自己踩過的坑,怕忘了

一.TextField:

1.去掉輸入數字的計數:decoration中的counterStyle: TextStyle(color: Colors.transparent).

2.去掉獲取和失去焦點時邊框改變顏色的效果:decoration內border: InputBorder.none,

3.去邊框時設置BorderSide的width為0或color: Colors.transparent后依然存在邊框時,需要設置為borderSide: BorderSide.none

4.設置背景色需要在decoration內 ? ? filled:true, ? fillColor: Colors.blue同時設置才會顯示

二.Uint8List類型和string類型,Listint的轉換

連續兩次base64解碼時,參數只能使用string類型,但是base64解碼后是Uint8List類型,此時需要將Uint8List類型轉換為string類型,使用:utf8.decode(Uint8List)即可,需要import 'dart:convert';

Listint轉Uint8List:讀取接口時獲取的數據是Listint的圖片數據,想顯示時需要轉成Uint8List,然后使用Image.memory(),使用:Uint8List.fromList(Listint)即可

三.報錯:DioError [DioErrorType.DEFAULT]: FormatException: Unexpected character (at character 1)MGFlMFo0NEZ3RWNMbE5YbGNGOXZGcUlJdUhIS2x2Q3NlckxqWXlEeG5JWndZdXIrSUpLN3ZOczR...

這是因為dio請求返回的數據默認是以json的格式讀取的,而返回的數據是密文形式,需要修改dio的Options的responseType為ResponseType.PLAIN,這樣返回的數據就以字符串形式處理.

四.去掉點擊控件背景出現的水波紋效果,即去掉md的效果:

在main.dart的MaterialApp內的theme加上splashColor: Colors.transparent

五.布局去掉沉浸式效果和布局設置占滿全屏卻無效的問題

使用Scaffold的body的布局默認是沉浸式的,將狀態欄一起包含了,可以通過在body后添加一層SafeArea即可.

布局設置double.infinity占滿全屏高度卻無效,大部分情況都是因為某一級的父布局的高度已經有了限制,所以設置充滿屏幕只會充滿父布局,有些widget默認是按內容填充類似wrap_content就會導致寫布局的過程中自己沒有限制高度但最后的布局不是自己想要的,可以給各個父布局設置不同背景顏色來查看是從哪兒開始被限制了高度來排查問題.

六.占滿剩余空間,類似android的match_parent可以使用double.infinity

七.LinearProgressIndicator

1.LinearProgressIndicator設置進度值的顏色為單一顏色:valueColor : new AlwaysStoppedAnimation(Color(JColor.blue))

2.給LinearProgressIndicator設置圓角:ClipRRect(

borderRadius:BorderRadius.circular(60.0),

child:LinearProgressIndicator(value:0.2,backgroundColor:Color(JColor.grayBg),valueColor:new AlwaysStoppedAnimation(Color(JColor.blue)),

)

八.Expanded:

1.若嵌套多層column且內容的高度都不確定需要占滿剩余空間,需要每層的column的內容都嵌套一層expanded來申明每層都占滿剩余的空間,否則最里面的內容層需要指定高度,不然會報錯

九.Container設置最小/大寬度或高度:

constraints:BoxConstraints(minHeight:56),

十.滑動的widget嵌套:

1.解決滑動沖突:內層嵌套的滑動widget設置physics:NeverScrollableScrollPhysics()

2.解決滑動嵌套ui顯示不出來或者報錯,內層的滑動widget設置shrinkWrap:true

十一.使用multi_image_picker: ^4.3.4安卓運行報錯Didn't find class "com.sangcomz.fishbun.FishBunFileProvider"

1.需要android工程支持androidx,需要在android工程的gradle.properties內添加android.enableJetifier=true和android.useAndroidX=true并點擊右上角的open for editing in android studio,運行成功后就可以了

十二.使用textfield時的文字ui總是很高

使用了maxlength且只是在textfield的InputDecoration設置counterStyle的顏色為透明使下面的計數文字消失會導致文字ui很高,counter的計數文字只是顏色是透明但依然在布局中占了位置所以導致文字很高,直接使用counterText:""即可

十三.使用ListView報錯Vertical viewport was given unbounded height

需要將ListView放入Expanded內部

Flutter遇到的坑

最近寫了一個LoadingView用于頁面的網絡加載,使用的是StatefulWidget。由于項目是使用的Get對狀態進行控制的,所以在GetBuild中對Loading進行刷新。但在使用中發現rebuild LoadingView沒有刷新狀態,看參數是在Widget中更新了的。

后續定位發現,StatefulWidget在rebuild的時候,并不會重新執行initState方法,而只會執行build方法,這也符合state和widget的一對多原則。知道問題所在,修改也非常簡單。去掉state中的status變量,使用widget中的initStatus值即可。

在此記錄,對于Get的一些注意點。

目前項目中對Widget進行了內嵌LoadingView的BaseWidget封裝,對GetxController進行了LoadingStatus狀態操作的BaseController封裝。發現在第二個繼承了BaseWidget的頁面中,對綁定的Controller進行update操作無效。

閱讀源碼后發現,GetBuilder的global參數默認是true,在沒有指定tag的情況下,會根據controller作為key進行全局map,若第二次調用時,會先通過Controller進行get,正好我們的BaseWidget使用的是BaseController導致全局只有一個Controller從而導致第二個頁面無法刷新問題。我們只需要在基類中將global改為false,直接使用init的controller即可。

目前在做App的主題色切換功能,發現在部分主題色下,Appbar的標題和Action自動變成深色,查閱資料后得知,由于色值的computeLuminance值過大導致Brightness自動為Brightness.light。

知道原因后就好辦了,通過設置ThemeData里面的Brightness類型的參數為Brightness.dark(注意我們只需要Appbar為深色,brightness參數控制的是整個頁面,不修改)。經驗證,primaryColorBrightness控制Appbar的標題和action,修改即可。

分享題目:flutter坑,flutter難嗎
文章起源:http://m.kartarina.com/article18/dseeddp.html

成都網站建設公司_創新互聯,為您提供Google定制網站全網營銷推廣云服務器移動網站建設網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

綿陽服務器托管
主站蜘蛛池模板: 日韩精品无码免费一区二区三区| 亚洲av永久无码精品三区在线4 | 东京热av人妻无码| 在线看片无码永久免费视频 | 亚洲精品午夜无码电影网| 无码内射中文字幕岛国片| 日韩AV无码不卡网站| 亚洲日韩国产精品无码av| 亚洲国产精品无码久久九九| 亚洲AV无码成人精品区狼人影院 | 亚洲最大av无码网址| 精品国产v无码大片在线观看| 无码人妻精品丰满熟妇区| 亚洲∧v久久久无码精品| 国产精品亚洲а∨无码播放麻豆| 亚洲av无码国产精品色午夜字幕| 精品无码成人久久久久久| 久久亚洲精品无码aⅴ大香| 国模GOGO无码人体啪啪| 无码激情做a爰片毛片AV片 | 国产V片在线播放免费无码| 亚洲精品无码不卡在线播放| 日韩免费人妻AV无码专区蜜桃| 久久国产精品无码网站| 国产av永久精品无码| 蜜臀AV无码精品人妻色欲| 精品人妻大屁股白浆无码| 亚洲国产精品成人精品无码区在线| 国产成人无码精品久久久久免费| 少妇仑乱A毛片无码| 日韩毛片免费无码无毒视频观看 | 中文字幕无码第1页| 一本加勒比hezyo无码专区| 国产成人无码a区在线观看视频免费| 亚洲精品无码人妻无码| 无码中文人妻在线一区二区三区| 亚洲国产AV无码一区二区三区| 日韩人妻无码精品久久久不卡| 亚洲动漫精品无码av天堂| 无码人妻品一区二区三区精99| 亚洲AV区无码字幕中文色|