Fluteer学习(二)

Flutter 学习二


今天继续学习Flutter,环境搭建完成了今天先总结一下Dret语言的一些内容。(参考书籍:《Flutter实战·第二版》)
Ver: 这个相信大家都不陌生,dret里变量都可以用这个声明,但是有一点要注意声明完进行赋值之后变量类型就不允许改变了。

dynamic :这个变量声明会在编译器阶段绕过编译检查,它和Object差不多作用,但是他是object
的子类。至于他和object的区别大家自行百度吧,或者以后遇到问题再补充。

final、const :这两兄弟依然是常量的声明,final是程序初始化时候指定常量,const则是编译阶段直接翻译成常量,这两兄弟在dret中是不需要指定变量类型的,比如在java中 final int a = 1 而dret中直接使用 final a = 1 就可以,他会自动判断类型。

空安全和late:
这里面引用了空安全,(万恶的空指针~) 在这里面你需要对定义的变量进行赋值或者允许为空,不然就会报错,ver a ;会报错,ver a = 1 就正常,要么就在定义的时候定义为 ver?a; late这个东西一般用在 late ver a; 代表说这这个变量我会稍后再赋值。然后我们直接 a = 1 这样就正常了。 a! 这玩意是告诉编译器,我的a已经不是空的了,不要再给我报错了。 还有一个 fun?.demo(),这个表示这个fun不为空时候才会调用demo()的方法。

函数:
这里面函数是可以作为参数传递的,函数如果不指定返回类型,则会默认为返回dynamic 类型。
bool isNoble (int atomicNumber)=> true ; 这个适用于函数只有一个表达式

var say = (str){
  print(str);
};
say("hi world");

变量函数↑
//----------------------------------

void execute(var callback) {
    callback();
}
execute(() => print("xxx"))

函数作为参数↑ 给 execute 函数传递了一个上面说的只有一个表达式的函数()=> print(“xxx”)。
//--------------------------------------------

String say(String from, String msg, [String device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

可选参数[xxx],用这个中括号括起来了,类似于c里面的缺省参数,又不太一样。顾名思义就是这个参数可以传过来也可以不传。

继承:
直接上代码啦

class A{
	public AA{}
	mixin  public BB{}
	mixin public CC{}
}

class B extends A with CC,BB{
}

异步操作:

Future.delayed(Duration(seconds: 2),(){
   //return "hi world!";
   throw AssertionError("Error");  
}).then((data){
   //执行成功会走到这里  
   print("success");
}).catchError((e){
   //执行失败会走到这里  
   print(e);
});

就是Future.then 和Future.catchError

下面这个whenComplete 类似于异常捕获中的finally(),就是一定会走的一个方法。

Future.delayed(Duration(seconds: 2),(){
   //return "hi world!";
   throw AssertionError("Error");
}).then((data){
   //执行成功会走到这里 
   print(data);
}).catchError((e){
   //执行失败会走到这里   
   print(e);
}).whenComplete((){
   //无论成功或失败都会走到这里
});

Future.wait这个函数意思就是一定会等里面的方法都执行完才会回调,任何一个出错就抛出异常:

Future.wait([
  // 2秒后返回结果  
  Future.delayed(Duration(seconds: 2), () {
    return "hello";
  }),
  // 4秒后返回结果  
  Future.delayed(Duration(seconds: 4), () {
    return " world";
  })
]).then((results){
  print(results[0]+results[1]);
}).catchError((e){
  print(e);
});

Async/await:和java里面一样
//-----------------------------
Stream : 接受所有的异步结果过,无论成功失败。

Stream.fromFutures([
  // 1秒后返回结果
  Future.delayed(Duration(seconds: 1), () {
    return "hello 1";
  }),
  // 抛出一个异常
  Future.delayed(Duration(seconds: 2),(){
    throw AssertionError("Error");
  }),
  // 3秒后返回结果
  Future.delayed(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

大概看的内容就这些,目测今天还能继续学习下去~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值