You need to enable JavaScript to run this app. Flutter地图报No Material Widget Found错,IconButton崩溃问题求解
优惠活动
大模型
产品
解决方案
定价
更多

Flutter地图报No Material Widget Found错,IconButton崩溃问题求解

报错原因

控制台抛出的No material widget found、IconButton widget require a material widget,本质是因为IconButton、TextField、CircularProgressIndicator均为Material Design体系组件,这类组件必须依赖上层节点提供的Material上下文才能正常渲染。你当前的MapTab视图直接返回Stack,未给这些组件提供对应的Material容器,因此触发崩溃。

修复方法

在MapTab的build方法返回的组件最外层,套一层透明类型的Material组件即可,不会遮挡下层地图展示:

@override
Widget build(BuildContext context) {
  _size = MediaQuery.of(context).size;
  // 新增透明Material包裹,提供Material上下文
  return Material(
    type: MaterialType.transparency,
    child: Stack(
      alignment: AlignmentDirectional.center,
      // 原有Stack内的所有子组件逻辑完全保留,无需修改
      children: [
        // 原有的位置加载FutureBuilder、定位按钮、顶部操作栏、底部商户卡片
      ],
    ),
  );
}
注意事项
  • 如果MapTab作为独立页面使用,也可以直接用Scaffold包裹,将Scaffold的backgroundColor设为Colors.transparent,同样能提供符合要求的Material上下文
  • 如果后续调用的搜索页、自定义RestaurantMapCard组件出现同类报错,给这些组件的根节点同样套一层Material即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 14:54:08