Flutter中ScaleRoute类page参数空安全报错解决咨询
修复Flutter ScaleRoute类的空安全错误
这个错误的核心原因是:你声明的final Widget page是非空类型,但构造函数里将其设为可选参数且未指定非null默认值,而可选参数的隐式默认值是null,违反了Flutter的空安全规则。
以下是两种正确的修复方式:
方式一:添加required修饰符(推荐)
因为路由跳转必须指定目标页面,强制要求调用者传入page是最合理的做法,能从编译阶段避免空值问题:
class ScaleRoute extends PageRouteBuilder { final Widget page; ScaleRoute({required this.page}) : super( pageBuilder: ( BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, ) => page, // 补全pageBuilder的返回值 ); }
方式二:设置非null默认值(仅在有合理默认场景下使用)
如果业务上允许存在默认页面,可以给page指定一个非null的默认Widget,比如空容器:
class ScaleRoute extends PageRouteBuilder { final Widget page; ScaleRoute({this.page = const SizedBox.shrink()}) : super( pageBuilder: ( BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, ) => page, ); }
实际开发中优先选方式一,因为路由的目标页面通常是必须明确指定的,强制传入能避免后续潜在的空指针问题。
内容的提问来源于stack exchange,提问作者Baba
相关产品推荐
相关产品推荐

