Dart语言基础

2020-01-14  本文已影响0人  spades_K
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
 * */

上一篇下一篇

猜你喜欢

热点阅读