请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于代码分析器报错的问题

4.7章视频里出现的代码是

  String _school; //通过下划线来标识私有字段(变量)
  String city;
  String country;
  String name;

会报
The parameter ‘city’ can’t have a value of ‘null’ because of its type, but the implicit default value is ‘null’.
的错,姑且是改成

String? city;

但是下面命名构造方法部分,

Student.cover(Student stu):super(stu.name, stu.age){
    print('命名构造方法');
  }

会报 非null实例字段(_school, country, name)必须初始化,但是视频里没有
这种问题是不是dart的分析器升级之后检查变严格了,那应该怎么解决。

正在回答

2回答

Dart 2.12启用了null safety检查,解决此问题的方案主要有两种:

1.将pubspec.yaml中的sdk由>=2.12.0改为>=2.7.0:

environment:
  sdk: ">=2.7.0 <3.0.0"
  #  sdk: ">=2.12.0 <3.0.0"

2.将Dart代码适配下null safety

1 回复 有任何疑惑可以回复我~
  • 提问者 慕村0493939 #1
    那如果我更倾向于向高版本靠拢,允许比如Logger类的_cache属性可以为空
    但是这么做,会报
    A value of type 'Logger?' can't be returned from the constructor 'Logger' because it has a return type of 'Logger'. 
    的错,那应该怎么做?
    回复 有任何疑惑可以回复我~ 2021-05-23 09:02:24
  • CrazyCodeBoy 回复 提问者 慕村0493939 #2
    dart空安全单例的实现可参考下:https://stackoverflow.com/questions/66510201/singleton-class-in-flutter-with-nullsafety
    回复 有任何疑惑可以回复我~ 2021-05-24 09:02:49
  • 提问者 慕村0493939 回复 CrazyCodeBoy #3
    问一下,stackoverflow中
    _instance ??=
              GuestUser._(firstName, lastName, email, address, paymentInfo);
    
    ??= 是什么语法
    回复 有任何疑惑可以回复我~ 2021-05-24 10:09:53
提问者 慕村0493939 2021-05-21 15:55:56

搜了一下,dart在2020年内支持空安全机制,课程代码可能已经旧了,那应该调低dart语法版本还是学高版本语法

空安全是2.12.x版本加进来的,我现在SDK是2.13.0 stable

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信