关于Dart编程语言的空安全(null safety),你要知道的都在这里

本文详述Dart的空安全特性,包括Nullable和non-nullable类型、空断言操作符!、类型提升、late关键字的使用,以及升级到null safety的注意事项。通过实例展示了如何处理Dio库的空安全问题,强调了空安全对代码健壮性的重要性。
摘要由CSDN通过智能技术生成

戳这里了解《Flutter入门与实战》专栏,持续更新、系统学习!

前言

由于升级了 Flutter 版本,升级完之后跑了一下之前的代码,也没什么问题。升级后最大的区别在于升级后的版本支持 Dart 的 null safety版本了。关于 null safety 其实并不是什么新鲜事了,很早的时候 Swift 就已经支持了,Dart是从2.12.2版本开始支持该特性的。本篇以官方文档为蓝本,聊一下 Dart 的 null safety 特性。官方文档链接:Null Safety

null safety 最大的特点就是默认声明的对象是非空的,除非你明确该对象可以为空

Nullable 和 non-nullable 类型

当你选择使用 null satety 特性时,所有的类型默认是非空的。例如如果声明了一个 String类型的变量,那么就意味着它一直包含字符串值。如果你想要一个 String 对象能够接收字符串值或null,那么就需要在类型声明后面加上?标识,一个声明为String?类型的变量可以包含字符串值或 null

String? str1;
String str2;
// OK
str1 = null;
// 报错
str2 = null;
// OK
List<String?> strList1 = ['a', null, 'c'];
// 报错
List<String> strList2 = ['a', null, 'c'];

空断言操作符!

如果确定一个对象或表达式返回值有值,那么就可以使用空断言操作符!强制转为不为空对象,然后可以使用它赋值给非空对象,或访问其属性或方法,如 valiable!.xx。这种情况下,如果对于nullable 对象不加!,编译器就会报错。但是,如果对象本身是null,加!操作符会导致异常。

int? couldReturnNullButDoesnt() => 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛上码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值