Я пытаюсь создать простую страницу входа в свое приложение Flutter. Я успешно создал кнопки TextFields и Login / Signin. Я хочу добавить горизонтальный ListView. Когда я запускаю код, мои элементы исчезают, если я делаю это без ListView, все снова в порядке. Как мне это сделать правильно?
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text("Login / Signup"),
),
body: new Container(
child: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new TextField(
decoration: new InputDecoration(
hintText: "E M A I L A D D R E S S"
),
),
new Padding(padding: new EdgeInsets.all(15.00)),
new TextField(obscureText: true,
decoration: new InputDecoration(
hintText: "P A S S W O R D"
),
),
new Padding(padding: new EdgeInsets.all(15.00)),
new TextField(decoration: new InputDecoration(
hintText: "U S E R N A M E"
),),
new RaisedButton(onPressed: null,
child: new Text("SIGNUP"),),
new Padding(padding: new EdgeInsets.all(15.00)),
new RaisedButton(onPressed: null,
child: new Text("LOGIN"),),
new Padding(padding: new EdgeInsets.all(15.00)),
new ListView(scrollDirection: Axis.horizontal,
children: <Widget>[
new RaisedButton(onPressed: null,
child: new Text("Facebook"),),
new Padding(padding: new EdgeInsets.all(5.00)),
new RaisedButton(onPressed: null,
child: new Text("Google"),)
],)
],
),
),
margin: new EdgeInsets.all(15.00),
),
),
);
источник
У меня тоже есть эта проблема. Мое решение - использовать
Expanded
виджет для увеличения оставшегося места.источник
Причина ошибки:
Column
расширяется до максимального размера в направлении главной оси (вертикальной оси), как и размерListView
.Решения
Итак, вам нужно ограничить высоту
ListView
. Есть много способов сделать это, и вы можете выбрать наиболее подходящий для вас.Если вы хотите позволить
ListView
занять все оставшееся пространство внутри,Column
используйтеExpanded
.Если вы хотите ограничить свой
ListView
выборheight
, вы можете использоватьSizedBox
.Если ваш
ListView
маленький, вы можете примеритьshrinkWrap
на нем недвижимость.источник
У меня
SingleChildScrollView
в качестве родителя и одинColumn
виджет, а затем виджет просмотра списка в качестве последнего дочернего элемента.Добавление этих свойств в список сработало для меня.
источник
Expanded Widget увеличивает свой размер настолько, насколько это возможно, с доступным пространством. Поскольку ListView по существу имеет бесконечную высоту, это вызовет ошибку.
Здесь мы должны использовать гибкий виджет, так как он будет занимать только необходимое пространство, так как расширенный занимает весь экран, даже если виджетов недостаточно для рендеринга в полноэкранном режиме.
источник
На самом деле, когда вы читаете документы, ListView должен находиться внутри Expanded Widget, чтобы он мог работать.
}
источник
Как уже упоминалось выше, обернуть список с расширенным решением - это решение.
Но когда вы имеете дело с вложенными столбцами, вам также необходимо ограничить ListView определенной высотой (часто сталкивался с этой проблемой).
Если у кого-то есть другое решение, укажите в комментарии или добавьте ответ.
пример
источник
Можно использовать
Flex
иFlexible
виджеты. например:);
источник
источник
Попробуйте использовать Slivers:
источник