Dart Null safety 快速理解

简介

Dart语言在2.0引入空指针安全也就是Null safety,Null safety简单来说就是对空指针添加了安全界定,用我理解的话来说,之所以会有空指针安全被作为语法规则引入,以下面几点为主:

  1. 代码开发更愉快,最近流行的Kotlin其中的一个优势就是其引入了Null Safely,这在代码开发上能避免很多错误,而作为Dart语言开发的主阵地flutter是以热重载(hot fix)为开发优势的,能够使开发者不重复进行代码编译,通过运行时就能进行开发工作,大大节省了代码开发时间,在Dart引入Null Safely之前,如果产生了空指针相关错误就会抛出 类似NoSuchMethodError这些会影响运行时的异常,对于这种异常我们就需要再次重新编译和运行,这对flutter来说就是削弱原有的优势,对开发者来说,原本愉快的开发也将变得不愉快。
  2. 避免空指针错误,空指针错误在日常代码中是非常常见的,其中空指针就是空引用,空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常,而Null Safely能够帮助我们减少这方面的错误产生,在一定程度上就是减少项目问题和异常的产生,是整体开发过程更加安全且有效率。
  3. 语法更简洁,相对于我们原来的一些判空等方式来对空指针错误进行处理,dart引入了一系列语法糖来使我们的语法显得代码更为简洁,让整体逻辑能够更加的清楚。
    Tips:其中如果没有Null Safely,下方代码在执行时就会产生NoSuchMethodError异常。
// Without null safety:
bool isEmpty(String string) => string.length == 0;

main() {
  isEmpty(null);
}

Dart官方的引入原则为如下三条:

  1. Code should be safe by default(默认情况下代码应该是安全的)
  2. Null safe code should be easy to write (空指针安全代码应该很容易编写)
  3. The resulting null safe code should be fully sound(空指针安全代码应该是健全的的)

语法糖

在Dart官方文档Null Safely移植文档里主要是针对下面几个语法进行一部分处理。
在这里插入图片描述
对于其中几个也是空指针安全处理常见的语法标记,我们在下面一一对应了解。

符号作用简述使用场景
断言,表明该变量不会是空context!.widget.key;//告诉编译器Context不会是空,可以编译
可空,表明参数可以填空var ints = const <int?>[0, null];//参数除了int也可以填入null
late稍后初始化,表明目前虽然是空,但后续会进行初始化late int time;//目前不知到初始值,需运行后获取,可稍后初识化
required要求入参,表明该参数是必须填入的Test({double ? nulltest,required int nottest});//nulltest可空,但nottest必须填入

Dart Null Safety目前引入环境SDK至少高于2.12.0,环境修改位置为pubspec.yaml 文件:

environment:
  sdk: '>=2.12.0 <3.0.0'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值