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

Flutter Web运行报错:TypeError: Null不是Widget子类型求助

排查Flutter中TypeError: null不是Widget子类型的问题

首先,你当前的HomePage构造函数const HomePage({Key? key}) : super(key: key);是完全符合Flutter规范的写法,这个构造函数不是错误的根源,相关提示有误。

错误原因分析

报错信息TypeError: null: type 'Null' is not a subtype of type 'Widget'的核心是:某个Widget的build方法返回了null,但Flutter要求所有Widget的build必须返回一个非空的Widget实例。

虽然错误提示标注的相关组件是HomePage,但你的HomePage的build方法返回了完整的Scaffold结构,所有子Widget(AppBar、Column、RaisedButton等)都是有效的非空Widget,所以问题不在HomePage本身。

排查方向

错误的根源应该在你跳转的两个页面——WalletPage或TransferPage中,你需要检查这两个页面的代码:

  • 确认它们的build方法有没有遗漏return语句
  • 确认build方法返回的不是null,而是一个合法的Widget(比如Scaffold、Container、Text等)

错误示例与修正

比如如果你的WalletPage是这样写的(错误写法):

class WalletPage extends StatelessWidget {
  const WalletPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // 错误:没有return任何Widget,等同于返回null
  }
}

或者这样:

class WalletPage extends StatelessWidget {
  const WalletPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return null; // 错误:直接返回null
  }
}

修正后的合法写法示例:

class WalletPage extends StatelessWidget {
  const WalletPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Wallet')),
      body: const Center(
        child: Text('Wallet Page Content'),
      ),
    );
  }
}

为什么错误会指向HomePage?

当你在HomePage中点击按钮触发页面跳转时,Flutter框架会开始构建目标页面(WalletPage/TransferPage),如果目标页面的build方法返回null,框架会将触发跳转的HomePage标记为“相关错误组件”,但实际问题出在目标页面的代码上。

内容的提问来源于stack exchange,提问作者arhan subaşı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:55:09