Flutter 错误 - 找不到 Material 祖先的特定小部件是:
Posted
技术标签:
【中文标题】Flutter 错误 - 找不到 Material 祖先的特定小部件是:【英文标题】:Flutter error - The specific widget that could not find a Material ancestor was: 【发布时间】:2020-02-28 14:24:50 【问题描述】:我正在使用Align
小部件在屏幕底部中心放置一个图标按钮。
但是,我收到以下错误并且无法解决:
The specific widget that could not find a Material ancestor was:
IconButton
我的代码:
return Stack(
children: <Widget>[
Container(
child: GoogleMap(
initialCameraPosition:
CameraPosition(target: LatLng(1,1), zoom: 15),
onMapCreated: (map)
mapReady;
,),
),
Align(
alignment:Alignment.bottomCenter,
child: IconButton(
icon: Icon(Icons.next_week), onPressed: ()),
)
],
如果我将 IconButton 小部件替换为 Text 小部件,则效果很好。
您能否解释一下为什么它不起作用,为什么 IconButton 需要 Material 祖先?
【问题讨论】:
【参考方案1】:如果你用 Scaffold 包装你的堆栈(或一般的父级),你会得到这个错误。
在这种情况下,如果你用 Material Widget 包裹你的 IconButton,我相信它会解决这个问题:
Align(
alignment: Alignment.bottomCenter,
child: Material(
child: IconButton(icon: Icon(Icons.next_week), onPressed: () )),
)
【讨论】:
【参考方案2】:因为根据 IconButton (https://api.flutter.dev/flutter/material/IconButton-class.html) 的文档
图标按钮是打印在 Material 小部件上的图片,它会做出反应 通过填充颜色(墨水)来触摸。
[..]
要求其祖先之一是 Material 小部件。
IconButton 最有可能使用 ThemeData 以及 MaterialApp 通常提供的其他内容。
你不使用 MaterialApp 作为祖先有什么原因吗?
【讨论】:
以上是关于Flutter 错误 - 找不到 Material 祖先的特定小部件是:的主要内容,如果未能解决你的问题,请参考以下文章
如何修复material-kit-react'找不到模块:webpack loader错误'
ng2-material:错误 TS2304:找不到名称“进程”
SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid
Flutter 致命错误:找不到“Flutter/Flutter.h”文件
错误:(1)检索项目的父项时出错:找不到与给定名称“android:TextAppearance.Material.Widget.Button.Inverse”匹配的资源[重复]