Позиционированные виджеты должны быть размещены непосредственно внутри виджетов стека - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь реализовать gridview с изображением и текстом внутри него.где я хочу текст в нижней части изображения с черным фоном.Вот мой код для 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,
           )
        ],
     ));
    }
 }

С этим кодом отображается ошибка

Positioned widgets must be placed directly inside Stack widgets.
Positioned(no depth, dirty) has a Stack ancestor, but there are other widgets between them:
- Column(direction: vertical, mainAxisAlignment: start, crossAxisAlignment: center)

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

Мы только что обсуждали это вчера.Позиционирование может использоваться не только в стеке, поэтому документы не совсем верны.Он не может быть использован ни с чем, что рендерится, и документы очень специфичны для RenderObjectWidget:

"Позиционированный виджет должен быть потомком стека, а путь от позиционированного виджета до еговключающий стек должен содержать только StatelessWidgets или StatefulWidgets (не виджеты других типов, например RenderObjectWidgets).

Источник: https://docs.flutter.io/flutter/widgets/Positioned-class.html

Столбец происходит от RenderObjectWidget: ... Widget>RenderObjectWidget> MultiChildRenderObjectWidget> Flex> Столбец

Большинство людей, начинающих с Flutter, знают только StatelessWidget и StatefulWidget, но есть и другие, и знание их иногда может быть очень важным.

Widget:
StatefulWidget
StatelessWidget
RenderObjectWidget
ProxyWidget
PreferredSizeWidget

Больше по адресу: https://docs.flutter.io/flutter/widgets/Widget-class.html

0 голосов
/ 23 мая 2018

Проблема была с Column, после изменения нескольких строк здесь и там я, наконец, обнаружил, что это из-за Column

Как только я изменяю Column на Stack, он работает нормально.

return new Container(
        child: new Stack(
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...