Flutter编译警告修复:空安全操作符'!'作用于非空WidgetsBinding
修复Flutter中"Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null"警告
这个警告的原因很明确:在新版Flutter中,WidgetsBinding.instance的类型已经从可空的WidgetsBinding?调整为非空的WidgetsBinding——该属性永远不会返回null,你之前添加的空断言!属于多余操作,因此编译器抛出警告。
修复方法
直接移除代码中的!符号即可,修改后的代码如下:
class _ForgotPasswordState extends State<ForgotPassword> { StreamController<bool>? _events; bool _displayMessage = false; @override initState() { super.initState(); _events = new StreamController<bool>(); WidgetsBinding.instance .addPostFrameCallback((_) => doRequest(context: context)); } }
兼容旧版本的可选方案
如果需要同时兼容仍将WidgetsBinding.instance设为可空的旧版Flutter,可以使用空合并运算符做兼容处理:
WidgetsBinding.instance ?? WidgetsBinding() .addPostFrameCallback((_) => doRequest(context: context));
不过更推荐直接升级到最新稳定版Flutter,新版本已从底层保证instance不会为null,无需额外的空判断或断言。
内容的提问来源于stack exchange,提问作者Paul Coshott
相关产品推荐
相关产品推荐

