Error: Field '_cache' should be initialized
来源:5-9 带你揭开Flutter中的面向对象(工厂构造方法)
 
			诺巴蒂
2021-06-05
class Logger {
  static Logger _cache;
  // 单利模式,使用工厂构造方法实现
  factory Logger() {
    if(_cache == null) {
      return _cache = Logger._internal();
    }
    return _cache;
  }
  // 命名构造方法
  Logger._internal();
}
报错
Error: Field ‘_cache’ should be initialized because its type ‘Logger’ doesn’t allow null.
它要求必须附初始值,那这个例子怎么改才能运行呢
写回答
	3回答
- 
				  CrazyCodeBoy 2021-06-07  或者将dart版本该成兼容版本也行10 或者将dart版本该成兼容版本也行10
- 
				  bicbrv 2021-07-13 class Logger { static Logger? _cache; factory Logger(){ // if(_cache==null){ // _cache = Logger._internal(); // } return _cache ??= Logger._internal(); } Logger._internal(); void log(String msg){ print(msg); } }https://stackoverflow.com/questions/67049107/the-non-nullable-variable-database-must-be-initialized 参考这个答案。 我试了下,这种方式也可以,不用改sdk版本号。充分利用dart新版本的non-nullable by default(NNBD)特性。 00
- 
				  慕粉1469634287 2021-06-06 return _cache = Logger._internal(); 不要用return,这里是赋值 00
相似问题
 
						 或者将dart版本该成兼容版本也行
或者将dart版本该成兼容版本也行 
						