#flutter #dart
#флаттер #dart
Вопрос:
Я хочу отобразить на экране три вещи: расписание с указанием даты, ListView
содержащий несколько Container
и панель навигации в нижней части экрана.Причина, по которой я помещаю их в Stack
это ListView
больше, чем размер экрана, и я не хочу, чтобы он блокировал панель навигации. Мой вопрос о содержимом ListView
вообще не отображается, так как нижняя панель навигации просто пуста. Я попытался заменить ListView
на Column
, это работает, но это не то, что я хочу. И ошибка =
Окно визуализации не было развернуто: RenderRepaintBoundary#40da3 relayoutBoundary=up2 NEEDS-PAINT ‘пакет: flutter / src / rendering /box.dart’: Ошибка утверждения: строка 1694 поз 12: ‘Размер’
body: Stack(
children: <Widget>[
Positioned(
top: 0,
child: timeTable(),
),
Positioned(
top: 114.0,
height: 200,
child: ListView(
children: <Widget>[
Container(height: 100,),
Container(height: 100,),
],
)
),
Positioned(
bottom: 0,
child: NavigationBar(),
),
],
),
ниже о классе Schedule()
Widget timeTable() {
return Container(
height: 98.0,
width: 540.0,
margin: EdgeInsets.only(left: 114.0, right: 114.0),
child: Column(
children: <Widget>[
SizedBox(height: 24.0,),
Container(
height: 24.0,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
child: Text('日付', style: StatisticTextStyle.date, ),
),
stuckButtons(),
],
),
),
Container(
padding: EdgeInsets.only(bottom: 0),
height: 44,
child: Container(
alignment: Alignment.bottomRight,
padding: EdgeInsets.only(top: 0),
child: RichText(
text: TextSpan(
children: [
TextSpan(
text: "2020年10月15日 ",
style: StatisticTextStyle.mainText,
),
WidgetSpan(
// make the icon higher so that alignment with the text.
child: Container(
padding: EdgeInsets.only(bottom: 2),
child: MyIcon.calendarIcon,
)
),
],
),
),
),
),
],
),
);
}
Комментарии:
1. трудно понять, чего вы пытаетесь достичь здесь. Может быть, поделитесь с нами каким-нибудь скриншотом?
2. Вы пытались обернуть свой listview с
expanded
виджетом3. опубликуйте весь код, чтобы легко скопировать вставить и воспроизвести ошибку на dartpad
4. @JohnJoe извините, я новичок в stackoverflow, я повторно отредактировал свой вопрос. Пожалуйста, проверьте это еще раз. Спасибо, что напомнили.
5. @AR Я только что попробовал ваше решение, кажется, оно немного работает, содержимое
ListView
и нижняя панель навигации удалены, ноtimeTable
исчезли.
Ответ №1:
Я решил проблему. Причина, по которой я выбираю Stack
, касается настраиваемой нижней панели навигации, поскольку виджет принадлежит телу. На самом деле, мы можем использовать bottomNavigationBar
в Scaffold. Итак, остается проблема в том, как поддерживать виджет и ListView
в Column
для отображения на экране. новая информация об ошибке =
Во время выполнения функции performResize() было выдано следующее утверждение: вертикальному экрану просмотра была присвоена неограниченная высота. нетрудно найти, что мы должны указать
ListView
высоту. ПоместитеListView
вcontainer
и установите высотуcontainer
, тогда все будет в порядке.