#dart #flutter #flutter-layout
#dart #трепетание #flutter-макет
Вопрос:
Я пытаюсь использовать ListView.builder для отображения горизонтального списка в стеке, но сталкиваюсь с этой странной ошибкой при прокрутке ListView, если я установил itemCount: 10
. Если я настрою itemCount: 20
прокрутку ListView как обычную.
Я тестировал в эмуляторе (Galaxy Nexus 720×1280 android 5.0) и на реальном устройстве (Nokia 7 plus, Android 9.0). Как я могу это исправить?
class BugPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Stack(
children: <Widget>[
Positioned(
left: 20.0,
right: 20.0,
height: 60.0,
bottom: 70.0,
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 10, // Overflow when scroll.
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 3.0,
),
child: Container(
width: 40.0,
height: 40.0,
color: Colors.red,
child: Center(child: Text("$index")),
),
);
},
),
),
SizedBox(width: 10.0),
FloatingActionButton(
backgroundColor: Colors.blue,
onPressed: () {},
child: new Icon(
Icons.add,
color: Colors.black,
),
),
],
),
),
],
),
),
);
}
}
Ожидаемый результат:
Фактический результат:
Комментарии:
1. можете ли вы добавить журналы ошибок? У меня нет никаких проблем с этим кодом
2. В журнале консоли @AmolG не отображается никаких ошибок, только ограничение максимальной ширины переполнения пользовательского интерфейса listview при прокрутке в моем эмуляторе. Пожалуйста, посмотрите новое видео , которое я загрузил, для получения дополнительной информации.
3. Единственное изменение, которое вы вносите для перехода от изображения 1 к изображению 2, это
itemCount: 10
itemCount: 20
? Есть ли какие-либо другие изменения между двумя кодами?4. я попробовал ваш код, он не показывает переполнение, с 10 или 20, не могли бы вы показать, как вы вызываете
BugPage
5. Попробуйте изменить на гибкий вместо расширенного
Ответ №1:
Я попробовал ваш код и тоже без проблем запускался с большим количеством элементов, но у меня есть совет, измените
SizedBox(width: 10.0)
для заполнения вокруг кнопки
Padding(
padding: const EdgeInsets.only(left: 10),
child: FloatingActionButton(
backgroundColor: Colors.blue,
onPressed: () {},
child: new Icon(
Icons.add,
color: Colors.black,
),
)
)
Комментарии:
1. Хороший! Сработало для меня
Ответ №2:
Похоже, что эта ошибка появляется в старой версии flutter после обновления до новейшей версии, все в порядке.