定位的小部件必须直接放在Stack小部件中

时间:2018-05-23 10:06:08

标签: flutter flutter-layout flutter-positioned

我正在尝试使用图像及其中的文本来实现gridview。我希望文本在图像的底部与黑色背景。这是我的df['Result']=np.where((df.ix[:,1:20])<df['V']).all(1),1,0)

代码
ListItem

使用此代码显示错误

class ListItem extends StatelessWidget {
    String url;
    String name;

    ListItem(this.url, this.name);
    @override
    Widget build(BuildContext context) {

        return new Container(
            child: new Column(
            children: <Widget>[
                new Image.network('${url}', fit: BoxFit.cover),
                new Positioned(
                    child: new Container(
                         child: new Text('${name}',
                         style: new TextStyle(fontSize: 20.0, color: Colors.white)),
                    decoration: new BoxDecoration(color: Colors.black),
                    padding: new EdgeInsets.fromLTRB(16.0, 16.0, 16.0, 16.0)),
                left: 0.0,
                bottom: 108.0,
           )
        ],
     ));
    }
 }

2 个答案:

答案 0 :(得分:1)

我们昨天才讨论这个问题。实际上,定位不仅可以在堆栈中使用,所以文档对此并不完全正确。它不能在任何渲染中使用,并且文档是关于RenderObjectWidget的非常具体的:

”“位置小部件”必须是Stack的后代,并且从“位置小部件”到其封闭堆栈的路径必须仅包含StatelessWidgets或StatefulWidgets(不能包含其他类型的小部件,例如RenderObjectWidgets)。

来源:https://docs.flutter.io/flutter/widgets/Positioned-class.html

列是从RenderObjectWidget继承的: ...窗口小部件> RenderObjectWidget> MultiChildRenderObjectWidget> Flex>列

大多数从Flutter开始的人都只知道StatelessWidget和StatefulWidget,但是还有其他人,并且有时知道它们可能非常重要。

小部件:
StatefulWidget
StatelessWidget
RenderObjectWidget
ProxyWidget
PreferredSizeWidget

更多信息: https://docs.flutter.io/flutter/widgets/Widget-class.html

答案 1 :(得分:0)

问题出现在Column,从这里改变了几行后我终于发现这是因为Column

Column更改为Stack后,效果会很好。

return new Container(
        child: new Stack(