采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
你好这个判断会报错,已经加了空安全适配 ,报这个未被初始化 这个是为啥呢?我查了一下,dart也不支持像kotlin那样去判断是否被初始化,该怎么办呢。
late关键字修饰的_logger属性,为Logger类型,它是非空类型,只不过延迟到后面某个时间进行初始化赋值。
_logger既然是非空属性,那么代码里出现_logger==null当然会报错。
你可以将Logger类型定义改为Logger?类型,带?的类型表示它修饰的属性可以为null。
可以参考下下面的写法修改下:
static HiCache? _instance;
static HiCache getInstance() { if (_instance == null) { _instance = HiCache._(); } return _instance!; }
这样是对的,可以运行,没有问题,那工厂构造方法算怎么回事呢?工厂构造方法用不了了是吗?
/// 工厂构造方法 class Logger { static Logger? _logger; factory Logger() { if (_logger == null) { _logger = Logger._create(); } return _logger!; } static Logger getInstance(){ if (_logger == null) { _logger = Logger._create(); } return _logger!; } Logger._create(); void log(String msg) { print(msg); } } 我明白了 这样也是可以的,谢谢
嗯,是的。
登录后可查看更多问答,登录/注册
解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。
1.7k 4
2.0k 1
4.1k 5
1.8k 3
1.7k 5