自從把Flutter SDK中的analysis_options.yaml copy到項目根目錄後就***,當時是700多個error,警告記不清了,提示信息有7k個,總共花了一天半所有改完。編程
因此仍是得養成良好的代碼編寫習慣bash
除非你的字符串中有單引號---> ',否則整個字符串用單引號。異步
只要類的定義中有寫泛型,或者一些方法中用到了泛型,那麼在使用這些類或者調用這些方法的時候也必定要加上泛型async
最多見的例子函數
List<String> list=<String>[];
Map<String,String> map=<String,String>{};
Future<void>
複製代碼
Flutter中:優化
Navgator.pust<void>
showDialog<void>
Tween<double>
Tween<int>
複製代碼
根據具體場景添加泛型 在傳遞List或者Map的時候ui
<T>[]
<T,T>{}
複製代碼
前面的泛型也務必加上 []也須要在前面加上泛型this
有new的都是祖傳代碼了,沒啥細講的.spa
也儘可能不要用var與dynamic指針
在任什麼時候候使用新的變量,若是它不須要被二次修改,請必定加上final修飾
final String str='Nightmare';
for(final String str in xxx){
}
複製代碼
Map、List的對象都是引用,相似於C語言中的指針,因此在定義後都是不會改變的
final List<int> list= <int>[];
final Map<String,dynamic> map=<String,dynamic>{};
複製代碼
const Duration();
const Text();
const Color(0xffff0000);
const EdgeInsets.only(bottom: 20.0);
複製代碼
const Center(
child: SizedBox(
width: 80,
height: 80,
),
),
),
複製代碼
其中SizedBox的const不用加
無論if條件後是單語句仍是多條語句 都添加大括號{}
if(bool){
print('');
}
for(***){
}
複製代碼
官方代碼也有不少單語句不加花括號的...
例子:
String number='Nightmare';
Text('$number')
複製代碼
優化:
String number='Nightmare';
Text(number)
複製代碼
例子:
int a;
String b='${a}';
複製代碼
優化:
int a;
String b='$a';
複製代碼
官方的有些代碼都有這種狀況
例子:
'str1'+'str2'
複製代碼
修改:
'str1' 'str2'
複製代碼
例子:
<String>['str1','str2' 'str3','str4']
複製代碼
你也許會想幹嗎不寫成 'str2str3' 但有些場景以下
<String>[
'-c',
'''export PATH=/data/data/com.nightmare/files/usr/bin:\$PATH mkdir /data/data/com.nightmare/files/home/$_index busybox unzip -o $_filePath -d /data/data/com.nightmare/files/home/$_index cd /data/data/com.nightmare/files/home/$_index sh /data/data/com.nightmare/files/home/$_index/install.sh rm -rf /data/data/com.nightmare/files/home/$_index rm -rf $_filePath'''
],
複製代碼
若是寫成單個字符串單行會特別長因此解決方法將整個字符串用''',因此有時候能夠用三個單引號包起來
例子
itemBuilder: (c, i) {}
複製代碼
優化
itemBuilder: (BuildContext context, int index) {}
複製代碼
void function()
複製代碼
或者
Future<void> function() async
複製代碼
Theme中
body1=>bodyText2
title=>headline6
subhead=>subtitle1
複製代碼
這只是我我的項目使用到的,其餘的看源碼就知道了
bool isExist;
***
isExist?***:***;
複製代碼
優化
bool isExist;
***
if(isExist){
}else{
}
複製代碼
先寫構造,再寫成員參數
無詳細解釋
並遵循一下大前提以下:
先所有import再export,不要交替進行
無詳細解釋
dart官網有介紹,在使用如下方法時,異步比同步要慢得多
Directory.exists
Directory.stat
File.lastModified
File.exists
File.stat
FileSystemEntity.isDirectory
FileSystemEntity.isFile
FileSystemEntity.isLink
FileSystemEntity.type
複製代碼
但我的遇到的不少場景帶sync的方法會把UI卡住,尤爲是在這些方法短期裏頻繁訪問的狀況,因此我註釋掉了analysis_options.yaml的這一行。