Flutter错误-找不到材料祖先的特定小部件为:

时间:2019-11-02 17:41:12

标签: flutter dart flutter-layout iconbutton

我正在使用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需要材质祖先?

2 个答案:

答案 0 :(得分:1)

如果使用Scaffold将堆栈(或通常是父级)包装起来,则不会出现此错误。

在这种情况下,如果您将IconButton与Material Widget封装在一起,我相信它将解决此问题:

lt4 = []
lt5 = []
for i in mylist:
    for j in i+1:
        if [j] == [j-1]:
            temp = i[-j:j+1]
            lt4.append(temp)
    lt5.append(lt4)

答案 1 :(得分:0)

因为根据IconButton(https://api.flutter.dev/flutter/material/IconButton-class.html)的文档

  

图标按钮是打印在“材质”小部件上的图片,该图片会做出反应   通过填充颜色(墨水)来触摸。

     

[..]

     

要求其祖先之一是“材料”小部件。

IconButton使用最有可能的ThemeData以及MaterialApp通常提供的其他内容。

您是否有理由不使用MaterialApp作为祖先?