美文网首页
二、Dart

二、Dart

作者: 求长生 | 来源:发表于2022-02-14 14:34 被阅读0次

1、dynamic 动态
2、final 最终的 const 常量 var变量
final和const的区别:
区别一:final 要求变量只能初始化一次,并不要求赋的值一定是编译时常量,可以是常量也可以不是。而 const 要求在声明时初始化,并且赋值必需为编译时常量。
区别二:final 是惰性初始化,即在运行时第一次使用前才初始化。而 const 是在编译时就确定值了。
3、内建数据类型
Dart有如下几种内建的数据类型:
numbers
strings
booleans
list(或者是arrays)
map
runes(UTF-32字符集的字符)
symbols 下面用一段代码来演示以上各类数据类型:
类型为空
int int? 可为空
if (i != null) {
print( i! * 9); // i!因为判过空,可以将i显式为非空变量
}
调用语法时 fun?.call() fun为空就不继续调用

4、函数
1.声明函数: 当Dart函数声明如果没有显式声明返回值类型时会默认当做dynamic处理,注意,函数返回值没有类型推断;
2.对于只包含一个表达式的函数,可以使用简写语法: =>
3.函数作为变量
4.函数作为参数
5.可选的位置参数
包装一组函数参数,用[]标记为可选的位置参数,并放在参数列表的最后面
6.可选的命名参数
定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。

5、运算符
// is运算符用于判断一个变量是不是某个类型的数据
// is!则是判断变量不是某个类型的数据
var s = "hello";
print(s is String); // true
var num = 6;
print(num is! String); // true

// ~/才是取整运算符,如果使用/则是除法运算,不取整
int k = 1;
int j = 2;
print(k / j); // 0.5
print(k ~/ j); // 0

// as运算符类似于Java中的cast操作,将一个对象强制类型转换
(emp as Person).teach();

// ??=运算符 如果 ??= 运算符前面的变量为null,则赋值,否则不赋值
var param1 = "hello", param2 = null;
param1 ??= "world";
param2 ??= "world";
print("param1 = [图片上传失败...(image-1a395-1640058440697)]

param2"); // param2 = world

// ?.运算符
var str1 = "hello world";
var str2 = null;
print(str1?.length); // 11
print(str2?.length); // null
print(str2.length); // 报错
}

…运算符(级联操作)
main() {
// 依次打印
// I am eating...
// I am sleeping...
// I am studying...
new Person()..eat()
..sleep()
..study();
}

mixing

mixin Eat {
  eat() {
    print('eat');
  }
}
mixin Walk {
  walk() {
    print('walk');
  }
}
class Dog with Eat, Walk{}
class Man extends Person with Eat, Walk, Code{}

Dart 是不支持多继承的,
extends用来继承,
with用来混合mixin其他类。实现其他通用方法。

异步 Future(未来) 和 Stream(流)
使用asyncawait关键词,

延时任务2秒后返回结果字符串"hi world!",然后在then中收到返回值data,打印结果。
Future.delayed(Duration(seconds: 2),(){
   return "hi world!";
}).then((data){
   print(data);
});

Future.catchError

如果异步任务发生错误,我们可以在catchError中捕获错误
Future.delayed(Duration(seconds: 2),(){
   //return "hi world!";
   throw AssertionError("Error");  
}).then((data){
   //执行成功会走到这里  
   print("success");
}).catchError((e){
   //执行失败会走到这里  
   print(e);
});

Future.whenComplete

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

Stream(流)
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

相关文章

  • Dart 语言入门 (四)

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Dart 语言入门 (六) - Exceptions

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Dart 语言入门 (五)

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Flutter开发之Dart语法基础(三)

    概览一、Dart的异步模型二、Dart的异步操作三、Dart的异步补充 一、Dart的异步模型 1.1 Dart是...

  • Dart 基础(四)

    前言笔者在之前已经写了3篇Dart的基础文章了。Dart 基础 (一)Dart 基础 (二)Dart 基础 (三)...

  • 10.2.flutter-Slidable

    一: main.dart 二: SlidablePage.dart 三: SlidableDismissalPag...

  • Dart 基础 (三)

    前言笔者在之前已经写了2篇Dart的基础文章了。Dart 基础 (一)Dart 基础 (二) 本文是Dart基础的...

  • flutter json解析

    一、在线json转dart https://javiercbk.github.io/json_to_dart/ 二...

  • Dart(二)

    Dart语言之从入门到放弃[https://juejin.cn/post/6844904154062667789]...

  • 二、Dart

    1、dynamic 动态2、final 最终的 const 常量 var变量final和const的区别...

网友评论

      本文标题:二、Dart

      本文链接:https://www.haomeiwen.com/subject/meevfrtx.html