Контейнер не принимает размер изображения BoxDecoration - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу добавить следующий контейнер в ListView, но контейнер не принимает размер изображения, добавляемого в качестве украшения. Если я добавлю изображение в качестве дочернего элемента контейнера, оно будет работать нормально, но я также хочу отобразить текст поверх изображения.

var imageListView = new List<Container>();
var container1 = new Container(
  margin: EdgeInsets.all(8.0),
  alignment: Alignment.bottomLeft,
  child: new Text('Order of The Day',
      style: new TextStyle(
          fontFamily: 'CallingAngelsPersonalUse',
          fontSize: 20.0,
          color: Colors.white
      ),
  ),
  decoration: new BoxDecoration(
    image: new DecorationImage(
      image: new AssetImage('assets/SVSunset.jpg'),
      fit: BoxFit.cover,
    ),
  ),
);

Когда контейнер добавлен в ListView и отображается так:

imageListView.add(container1);

new ListView(children: imageListView)

Кто-нибудь может увидеть, чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Мне удалось решить эту проблему, поместив все в стек и разместив вместо этого текст, как показано ниже:

var container1 = new Container(
  margin: EdgeInsets.all(8.0),
  child: new Stack(
    children: <Widget>[
      new Image(image: new AssetImage('assets/SVSunset.jpg')),
      new Positioned(
        left: 8.0,
        bottom: 8.0,
        child: new Text('Order of the day',
          style: new TextStyle(
              fontFamily: 'CallingAngelsPersonalUse',
              fontSize: 30.0,
              color: Colors.white
          ),
        ),
      )
    ],
  ),
);
0 голосов
/ 30 апреля 2018

Container Размер виджета (его ширина и высота) равен его дочернему виджету. Ваш Text как Container ребенок недостаточно велик, чтобы создать Container, который может содержать ваше фоновое изображение в полном размере ...

Вы можете добавить ширину и высоту к Container следующим образом:

Container(
  width: 55.0
  height: 60.0
  child:...
  ...
)

Вы также можете получить ширину экрана: MediaQuery.of(context).size.width

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