一、如何去掉右上角的DEBUG標簽?
1、
return MaterialApp( home: HomeScreen(), debugShowCheckedModeBanner: false,//去掉右上角DEBUG標簽 );
2、構建release版本;
二、SingleTickerProviderStateMixin是什么混入?
初始化animationController的時候需要一個TickerProvider類型的參數Vsync參數,所以需要我們混入TickerProvider的子類SingleTickerProviderStateMixin
三、operator重載操作符
這里用js來舉例,dart 判斷兩值相等,可以使用 == ,對一些基礎數據類型進行判斷。
如果你的需求是判斷自定義類型相等,== 就不行了,這時候就要用===,但是dart不同於js,沒有===。
但dart提供了operator重載操作符,這就是使用它的原因。
那如何使用呢,當然不能 A operator B 這么用了(js里當然可以 A === B),operator其實是類內部實現的,你在創建類的時候,就通過operator,為這個類提供一個對比方法,注意,dart是將這種對比,寫成了自己的方法,栗子如下:
class A { bool operator ==(dynamic y) { return y == 1; } } main() { var a = new A(); print(a == 1); // true print(a == 2); // false }看到沒,這個對比的過程,被寫成了類內部的一個方法。
四、退出
exit(1);///異常退出exit(0);///常規退出
五、查看打包文件大小
flutter build apk --target-platform=android-arm /// Android32位 輸出Built build/app/outputs/apk/release/app-release.apk (4.2MB)
flutter build apk --target-platform=android-arm64 /// Android64位 輸出Built build/app/outputs/apk/release/app-release.apk (4.6MB)
flutter build ios && tar -zcf build/app.ipa build/ios/iphoneos/Runner.app && ls -lh build/app.ipa /// ios輸出example/helloworldapp (as of this writing) is 8.3 MB
六、修改flutter應用名
1、ios
Info.plist => <key>CFBundleName</key><string>XXXXX<string/>
2、Android
AndroidManifest.xml => android:label="XXXXX"
七、修改應用圖標
1、ios
AppIcon.appiconset內替換相應分倍率icon,同時更新同目錄的Contents.json文件;
2、Android
mipmap內替換相應分倍率icon,同時更新AndroidManifest.xml 文件;
八、Text下面出現黃色雙下划線
style: TextStyle(
decoration: TextDecoration.none
)
因為沒有可繼承的祖先樣式widget;
九、如何去掉Buttonwidget的點擊效果
GestureDetector( child: IconButton( icon: Icon(Icons.print), color: Colors.black, onPressed: null, ), onTap: (){ print(123); }, ),
button沒有onPressed會默認為禁用狀態,置灰色,此時是沒有點擊效果的,通過color控制圖標顏色,外面包一層GestureDetector來給button添加點擊回調。
如果可以接受button的點擊效果,可以使用button自帶的onPressed回調;
十、TextField Widget 添加autofocus: true屬性時,會報RenderBox was not laid out: RenderEditable#6beb5 NEEDS-LAYOUT NEEDS-PAINT ???
別慌,1.21上的bug,flutter issues (bug發現時間1月13,當你看到這個問題的時候,可能我們的flutter團隊工程師已經修復了這個bug)
十一、滾動View撐滿屏,無法被Column包括問題
1、View外面包裹Expanded;
2、View Widget添加 shrinkWrap: true 屬性;
實際都是限制View的尺寸;
十二、flutter中的度數
import 'dart:math' as math;
math.pi /// 180deg
math.pi / 2 /// 90deg
math.pi * 2 /// 360deg
十三、Material設計規范中狀態欄、導航欄、ListTile高度?
分別為24、56、56屏幕高度
MediaQuery.of(context).size.height
十四、flutter中的顏色轉換
///顏色是一個字符串變量var c = "dc380d";
Color(int.parse(c,radix:16)|0xFF000000) //通過位運算符將Alpha設置為FF Color(int.parse(c,radix:16)).withAlpha(255) //通過方法將Alpha設置為FF
十五、指定當前系統
debugDefaultTargetPlatformOverride=TargetPlatform.iOS;print(defaultTargetPlatform); /// 會輸出TargetPlatform.iOS
///上面代碼即在Android中運行后,Flutter APP就會認為是當前系統是iOS,Material組件庫中所有組件交互方式都會和iOS平台對齊,defaultTargetPlatform的值也會變為TargetPlatform.iOS
十六、
