报错解决1、Change 'String' to 'Null' type annotation 即改变类型为Null

报错解决2、Make 'aaa' nullable 使aaa可为空,即取消非空判定

2、定义有返回值的方法

报错解决1、Make the return type nullable 即返回类型取消非空判定

报错解决2、Replace the return type with 'Null' 即返回类型为Null

3、1和2的配合使用

Null getA() {
  return null;
String? getA() {
  return null;

都可以使用 String? aaa=getA();接收。

由1、2和3可知?有取消非空判断的意思。

4、??的使用

String? getA() {
  return null;
String? aaa=getA();
String bbb= aaa ?? "ccc";
print("aaa=====$aaa");
print("bbb=====$bbb");
String? getA() {
  return "bbb";
String? aaa=getA();
String bbb= aaa ?? "ccc";
print("aaa=====$aaa");
print("bbb=====$bbb");

 由结果可知 aaa?? "ccc"表示如果aaa为null则返回ccc,aaa不为null则返回aaa的值

5、??=的使用

String? getA() {
  return null;
print("aaa=====$aaa");
aaa ??= "bbb";
print("aaa=====$aaa");
String? getA() {
  return "aaa";
print("aaa=====$aaa");
aaa ??= "bbb";
print("aaa=====$aaa");

由结果可知 aaa??="bbb";如果aaa为null则将bbb赋值给aaa,如果不为null则返回aaa的值

6、!的使用

 报错如下:Null check operator used on a null value  对空值使用的空检查操作符,说明!是空检查操作符,为空则会抛异常.

在使用!的时候最好try...catch...一下,避免上述报错,!使用时要慎重.

运行结果如下:

从6可以看出,!会判断是否为空,为空则抛出异常,不为空则正常运行. 

7、?   !的使用

报错:The method '[]' can't be unconditionally invoked because the receiver can be 'null'.  方法'[]'不能被无条件调用,因为接收方可能是'null'.

这里使用?或!号都可以。

此时不需要使用?或!,因为 List<AAA> list=[] 是正常定义的,与(1)中的不一样List<AAA>? list。

1、左边?.右边   如果左边为null则返回null,如果左边不为null则返回右边;

2、左边!.右边   如果左边为null则抛出异常,代码不会再继续向下执行,如果左边不为null则返回右边。

所以再使用!和!.时一定要慎重.

编辑和调试Flutter移动应用程序(使用F5或“ Debug菜单启动) 编辑和调试Dart命令行应用程序(使用F5或“ Debug菜单启动) 支持调试“仅我的代码”或SDK /库( 和 ) 实时错误/警告/待办事项 悬停/工具提示中的文档 重命名重构 格式化文件 支持保存格式( editor.formatOnSave ) 支持按格式格式化( editor.formatOnT 本文为 Dart 空安全的经典详解,其详细且全面地展开说明了 Dart 处理空安全采用的原则、具体实现和技术细节,对于众多 Dart 开发者而言是不可错过的精华内容。无论您是否已经成为了 Dart 专家,相信在阅读后都会感到受益匪浅。所以,倒一杯清甜的茶,找一张舒适的椅子,让我们带您进入空安全之旅吧! 自 Dart 2.0 替换了静态可选类型系统为健全的静态类型系统后,空安全是我们对 Dart 作出最大的改变。在 Dart 初始之际,编译时的空安全是一项少有且需要大量时间推进的功能。时至今日,Kot.. flutter dart语言类型后加问号 class ListItemWidget extends StatefulWidget { const ListItemWidget({Key? key, this.icon, required this.title, this.content, this.OnTap, }) : super(key: key); final IconData? icon; final String title; final St 有趣的事实:此应用程序完全基于开发! 该应用程序实现了方法。 这个想法是通过对团体的Stream做出React的小部件显示数据。 为了简化状态管理,我还实现了EventStates:基于事件发出新小部件状态的块。 多人游戏由Firebase处理。 Firestore数据库存储所有匹配项,队列和用户信息,并且所有端点都是用Typescript编写的Firebase函数(目录功能下的项目)。 当玩家寻找新的比赛时,他被放入FIFO队列,并在找到对手后立即加入比赛 1.动画介绍 Flutter中的动画系统基于Animation对象的,它不是一个Widget,这是因为Animation对象本身和UI渲染没有任何关系。Animation是一个抽象类,就相当于一个定时器,它用于保存动画的插值和状态,并执行数值的变化。widget可以在build函数中读取Animation对象的当前值, 并且可以监听动画的状态改变。 2.在Flutter中有哪些类型的动画? 在Flutter中动画分为两类:基于tween或基于物理的。 补间(Tween)动画:在补间动画中,定义了开始 示例代码: querySelector('#confirm') // 获取对象 (Get an object). ..text = 'Confirm' // 使用对象的成员 (Use its members). ..classes.add('important') ..onClick.listen((e) => window.alert('Confirmed!')) dart map对象null safety The method '[]' can't be unconditionally invoked because the receiver can be 'null'. Try making the call conditional (using '?.') or adding a null check to the target ('!').