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

Flutter导航报错:返回类型'Set<GameScreen>'不是'Widget'的原因及解决方法

Flutter Navigator导航报错:The return type "Set" isn't a "Widget"

报错原因分析

这个问题其实是箭头函数的语法误用导致的,我之前也踩过类似的坑:
在MaterialPageRoute的builder参数里,你写了builder: (context)=>{ return const GameScreen(); }——这里的=>{ ... }并不是你以为的“带大括号的箭头函数”,而是被解析成了Set集合字面量,相当于你返回了一个Set<GameScreen>类型的值,但builder回调要求必须返回Widget类型,这就直接造成了类型不匹配的报错。

修复方案

有两种简单的修复方式,选其中一种就行:

方式1:去掉多余的大括号(推荐)

箭头函数如果直接返回单个表达式,不需要加大括号,直接写返回的内容即可:

onPressed: (){ 
  Navigator.of(context).push( 
    MaterialPageRoute( 
      builder: (context) => const GameScreen()
    ) 
  ); 
}

方式2:保留大括号但修正函数写法

如果你后续需要在builder里加更多逻辑,想保留大括号,就得把箭头后的大括号去掉,改成普通的函数体写法:

onPressed: (){ 
  Navigator.of(context).push( 
    MaterialPageRoute( 
      builder: (context) {
        return const GameScreen(); 
      } 
    ) 
  ); 
}

修改后,builder就能正确返回GameScreen这个Widget,导航跳转就能正常工作了。

内容的提问来源于stack exchange,提问作者erbaz kamran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:22:47