小菜鸡开始学习flutter之十四

31 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

今日目标

经过前面十几篇的文章介绍,想必大家对Dart的基础部分有了一定的掌握了,在后面的文章中我们就正式开启Flutter之旅。

目前Dart以更新到了2.16版本,今天来了解Dart2.13之后添加的一些新特性 Null safety、late 关键字、空类型声明符?、非空断言!、required关键字

null safety

null safety翻译成中文就是空安全,通过这个可以帮助开发者避免一些日常开发中的很难被发现的错误,并且额外的好处是可以改善性能, 在Flutter2.2.0之后的版本都要求使用null safety

void main (){
  int a = 123;
  a=null;
}

image.png

?可空声明

在新版本中我们不能将空赋值给变量a,因为会触发空安全,但是如果需要给变量a赋值null呢?这个时候我们可以使用?这个来支持赋值null

void main(){
    int? a = 123;
    a = null;
}

image.png
这个时候就没有像上面那样提示报错了,表示变量a是一个可空的类型int。

!类型断言

String? str = '12345';
print(str.length);
str = null;
print(str.length);

image.png
当我们将变量str赋值为空的时候,再调用String的length就会报错,这个时候就用上了!类型断言.

image.png
如上,当我们将str赋值为空的时候,后续的print并没有提示报错,在执行的时候抛出了一个异常。通常会合try/catch结合在一起使用

late 关键字

late关键字主要用于延迟初始化

image.png
如上,当我们定义的类没有初始化构造函数,并且没有对类内的变量赋值,这个时候就会提示报错,要求对变量进行赋值不可以为空.

image.png
通过添加late关键字这样就不会报错了,可以在实例化之后再进行赋值。同样的late关键字也可以使用到接口上

image.png\

required

在dart最开始的时候@required是用来表示注解的,现在已经作为内置的修饰符,主要用于允许根据需要标记任何命名参数(函数或类),使得他们不为空。

String prinInfo (String name, {required int age, required String sex }) {}

image.png
这里就会提示我们必须传入 age 和sex两个参数。

ending

持续学习,加油,如有不对的地方还请指正,谢谢~~