Как удалить «главная страница: Эшафот «»Панель приложений:» в «Анимированном списке»?

#flutter

#трепетать

Вопрос:

Следующее code 1 имеет a AnimatedList и производит a blank white page . Я заметил code 2 , что работает хорошо without errors , и за этим MaterialApp последовало home: Scaffold appBar: встроенное в него. Я не хочу использовать что-либо appbar или что-либо, что раздувает виджет. и виджет будет повторно использован в другом виджете, так что я не хочу иметь панель приложений. Как убрать эти вещи и поместить two icon buttons AnimatedList их в а container and column ?

Код 1 — производит белый пробел

 @override  Widget build(BuildContext context) {  return Container(  child: Column(  children: [  IconButton(  icon: const Icon(Icons.add_circle),  onPressed: _insert,  tooltip: 'insert a new item',  ),  IconButton(  icon: const Icon(Icons.remove_circle),  onPressed: _remove,  tooltip: 'remove the selected item',  ),  Padding(  padding: const EdgeInsets.all(16.0),  child: AnimatedList(  key: _listKey,  initialItemCount: _list.length,  itemBuilder: _buildItem,  ),  ),  ],  ));  } }  

Код 2 — Работает хорошо

 @override  Widget build(BuildContext context) {  return MaterialApp(  home: Scaffold(  appBar: AppBar(  title: const Text('AnimatedList'),  actions: lt;Widgetgt;[  IconButton(  icon: const Icon(Icons.add_circle),  onPressed: _insert,  tooltip: 'insert a new item',  ),  IconButton(  icon: const Icon(Icons.remove_circle),  onPressed: _remove,  tooltip: 'remove the selected item',  ),  ],  ),  body: Padding(  padding: const EdgeInsets.all(16.0),  child: AnimatedList(  key: _listKey,  initialItemCount: _list.length,  itemBuilder: _buildItem,  ),  ),  ),  );  } }  

Комментарии:

1. Если вы не хотите использовать панель приложений, просто удалите ее из своего кода, так как использование панели приложений не является обязательным.

2. затем он выдает белый экран, я удалил его в Code 1

3. Хорошо, проверьте мой ответ

Ответ №1:

Итак, ошибка в том, что вы используете анимированный список внутри столбца, столбец имеет неограниченную высоту, а анимированный список пытается покрыть всю доступную высоту, поэтому он выдает ошибку и выдает пустой экран, и для решения этой проблемы используйте свойство shrinkWrap конструктора, как показано ниже :

 Scaffold(  body: Container(  child: Column(  children: [  IconButton(  icon: const Icon(Icons.add_circle),  onPressed: (){},color: Colors.blue,  tooltip: 'insert a new item',  ),  IconButton(  icon: const Icon(Icons.remove_circle),  onPressed: (){},color: Colors.blue,  tooltip: 'remove the selected item',  ),  Padding(  padding: const EdgeInsets.all(16.0),  child: AnimatedList(  shrinkWrap: true, // this will shrink this list according to available data  key: _listKey,  initialItemCount: 3,  itemBuilder: (context, index, abc) =gt; Text("hello"),  ),  ),  ],  )),  )  

Ответ №2:

Это происходит потому, что в вашем списке нет ограничений.

Другая возможность, помимо вышеупомянутого shrinkwrap , заключается в том, чтобы завернуть вас AnimatedList в Expanded то, что сделает его максимально возможным.