自从把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的这一行。