You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:03:13