1、变量声明
var
接收任何类型变量,但一旦赋值便不肯更改类型
dynamic
接收任何类型变量,赋值后可更改类型
final
,const
final只是要求变量在初始化后值不变,但通过final,我们无法在编译时(运行之前)知道这个变量的值;而const所修饰的是编译时常量,我们在编译时就已经知道了它的值,显然,它的值也是不可改变的。
2、函数
dart中函数可赋值给变量或者传参。
3、异步
Future
链式调用
//then:执行下一步
//delayed:延迟执行
//catchError:捕获错误
//whenComplete:无论成功失败都回调
//wait:等待多个任务都执行结束才继续
Future.wait([
// 2秒后返回结果
Future.delayed(new Duration(seconds: 2), () {
return "hello";
}),
// 4秒后返回结果
Future.delayed(new Duration(seconds: 4), () {
return " world";
})
]).then((data){
//执行成功会走到这里
print("success");
}).catchError((e){
//执行失败会走到这里
print(e);
}).whenComplete((){
//无论成功或失败都会走到这里
});
async/await
使用同步的代码形式来执行异步任务
task() async {
try{
String id = await login("alice","******");
String userInfo = await getUserInfo(id);
await saveUserInfo(userInfo);
//执行接下来的操作
} catch(e){
//错误处理
print(e);
}
}
Stream
可以接收多个异步操作的结果(成功或失败)
Stream.fromFutures([
// 1秒后返回结果
Future.delayed(new Duration(seconds: 1), () {
return "hello 1";
}),
// 抛出一个异常
Future.delayed(new Duration(seconds: 2),(){
throw AssertionError("Error");
}),
// 3秒后返回结果
Future.delayed(new Duration(seconds: 3), () {
return "hello 3";
})
]).listen((data){
print(data);
}, onError: (e){
print(e.message);
},onDone: (){
});
//输出:
I/flutter (17666): hello 1
I/flutter (17666): Error
I/flutter (17666): hello 3
网友评论