void main() {
var va = 100;
// va = "更改变量"; 报错 var推断出来的类型不可更改其类型;
//相当于 id 可以使用 Object 以外的方法
dynamic a = "aaaa";
// 只能使用 Object的方法
Object b = "CCCC";
print('赋值前 a ===$a b====$b');
// 可重新赋值
a = 100;
b = false;
print('赋值后 a ===$a b====$b');
// *****方法 [] 表示可选参数 如果不指定返回值 则 返回 dynamic类型 且不会自动推断。
String say (String from, String to, [String device]) {
var result = '$from say $to';
if(device != null) {
result = '$result with a $device';
}
return result;
}
// ***********指定形参名字 用{} 括号*******
void says({bool hidden, bool blod})
{
print('bool is $hidden blocd is $blod');
}
print(say("aaaa","bbbbbbbb"));
// aaaa say bbbbbbbb
says(hidden:true, blod:false);
// bool is true blocd is false
///************* 异步支持 ************
Future.delayed(new Duration(seconds: 2),(){
print('2秒后数据回来了');
}).then((data){
print('结束请求');
});
/// then方法还有一个可选参数onError,我们也可以它来捕获异常
Future.delayed(new Duration(seconds: 2), () {
//return "hi world!";
throw AssertionError("Error");
}).then((data) {
print("success");
}, onError: (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
* */
网友评论