web-dev-qa-db-fra.com

La fenêtre verticale a reçu une erreur de hauteur sans limite

 @override
 Widget build(BuildContext context) {
 return new Column(
  children: <Widget>[
    new Text("Some text"),
    ListView()
  ],
);
}
Widget ListView() {
return new ListView(
    padding: new EdgeInsets.symmetric(vertical: 8.0),
    children: Item());
}

List<Item> Item() {
return list
    .map((item) => new Item(text: item))
    .toList();
}

class Item extends ListTile {
Item({String text, GestureTapCallback onTap})
  : super(
        subtitle: new Column(children: <Widget>[
      new Text(text),
    ]));

Un espace vide apparaît à l'écran et la console indique:

La fenêtre verticale a été définie sans hauteur. Les fenêtres s’étendent dans le sens de défilement pour remplir leur contenant.

6
jaede

Envelopper ListView dans Flexible le fera fonctionner.

Widget ListView() {
return new Flexible(child: new ListView(
    padding: new EdgeInsets.symmetric(vertical: 8.0),
    children: Item()));
}
6
jaede

La meilleure solution consiste à utiliser Flexible, mais si vous voulez lui donner une hauteur exacte, vous devez utiliser Container comme ceci:

    Widget ListView() {
    return Container(
       height:100.0,
       child: ListView(
        padding: new EdgeInsets.symmetric(vertical: 8.0),
        children: Item()));
    }
0
dmarquina