如何在Flutter 中启用空安全

目录

Step 1: 开启空安全设置

Step 2:检查可升级的三方库

Step 3:升级三方库

Step 4:代码适配支持空安全


Step 1: 开启空安全设置

Flutter 2默认启用了空安全,所以通过Flutter 2创建的项目是已经开启了空安全的检查的,不知道自己是什么版本的可以通过下面命令来查看你的Flutter版本:

flutter --version

可能有的人会问,我现在已经是2.x版本的flutter了,也没见有什么特殊的啊,我怎么能确认已经开启了空安全呢?

答案:检查你的pubspec.yaml配置文件,sdk >=2.12.0表示开启空安全检查

environment:
  sdk: ">=2.12.0 <3.0.0" 

如果想关闭空安全检查,可以将SDK的支持范围调整到2.12.0以下即可,如:

environment:
  sdk: ">=2.7.0 <3.0.0"

Step 2:检查可升级的三方库

一旦项目开启了空安全检查,那么你的代码包括项目所依赖的三方库必须是要支持空安全的否则是无法正常编译的。

可以运行以下命令以了解您的项目中有哪些库需要升级到最新的空安全。

dart pub outdated --mode=null-safety

命令运行完后你会看到下面这些信息

 

红色表示不支持空安全的版本,绿色表示支持空安全的版本

如果某个库全是红色的话,多半是不维护或者废弃了,先别慌,可以去pub.flutter-io.cn上搜搜这个库有没有好心人fork实现了空安全的 ,如果没有,那就考虑考虑换库吧。。

如果你的Upgradable或者Latest大多为绿色的话,那么你就继续下一个步骤就行了,这一步主要是让你心里有个底,知道自己的三方依赖对于空安全的支持是怎么样的。

当然,有的人运行完上面的命令还会遇到另一种情况,出现这种情况的可以去买张彩票了

这表示你当前所有的第三方依赖,都已经支持了空安全!

Step 3:升级三方库

执行以下命令,升级支持空安全的三方

dart pub upgrade --null-safety

如果过程中遇到问题,运行以下命令 ,去检查升级失败的原因,挨个解决即可

dart pub update --null-safety --dry-run

Step 4:代码适配支持空安全

当三方库都升级完成之后,开始适配自己的代码

运行以下命令可以自动适配你的代码,帮你自动填充很多的?和!

dart migrate

如果遇到问题,说明还有库没升级到空安全,可以直接运行以下命令,强制适配,等完成后再解决有问题的库即可。

dart migrate --skip-import-check

不过最好还是把三方库都处理好了再适配代码空安全比较好。


最后,附上官方的升级教程,如果你还有其他问题,可以看看
Migrating to null safety | Dart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter 2.0 之后,Dart 默认启用安全Null Safety),因此在使用二维码扫描插件时需要使用安全的 API。 对于 `qr_code_scanner` 插件,可以使用 `qr_code_scanner_nullsafety` 包,其使用方式与原始插件基本相同,只是 API 有所改变。以下是一个简单的示例: 1. 添加 `qr_code_scanner_nullsafety` 插件到 `pubspec.yaml` 文件: ``` dependencies: qr_code_scanner_nullsafety: ^0.5.2 ``` 2. 导入 `qr_code_scanner_nullsafety` 包: ``` import 'package:qr_code_scanner_nullsafety/qr_code_scanner_nullsafety.dart'; ``` 3. 创建一个 `QRViewController` 和一个 `QRView`: ``` QRViewController? controller; final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); @override Widget build(BuildContext context) { return QRView( key: qrKey, onQRViewCreated: _onQRViewCreated, ); } void _onQRViewCreated(QRViewController newController) { controller = newController; controller!.scannedDataStream.listen((scanData) { // 处理扫描到的二维码 }); } ``` 注意,`QRViewController` 类型需要加上问号 `?`,表示这个对象可能为。在 `_onQRViewCreated()` 方法,也需要对 `controller` 进行非判断,确保它不为。 对于 `barcode_scan` 插件,可以使用 `barcode_scan_null_safety` 包,使用方式与原始插件类似。以下是一个简单的示例: 1. 添加 `barcode_scan_null_safety` 插件到 `pubspec.yaml` 文件: ``` dependencies: barcode_scan_null_safety: ^2.0.1 ``` 2. 导入 `barcode_scan_null_safety` 包: ``` import 'package:barcode_scan_null_safety/barcode_scan_null_safety.dart'; ``` 3. 调用 `scan()` 方法并处理返回的数据: ``` Future<void> scan() async { String barcode = await BarcodeScanner.scan(); // 处理扫描到的二维码 } ``` 对于 `barcode_scan_null_safety`,`scan()` 方法返回的类型为非的 `Future<String>`,不需要进行值检查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值