В Listview Flutter нет переноса слов, такого как Wrap?
Я хочу отобразить список виджетов с переменными размерами.
Flutter's Wrap отлично подходит для моих нужд макета.
final List<dynamic> someItems;
return SingleChildScrollView(
child: Wrap(
children: someItems.map((item) => _createTile(context, item)).toList(),
),
scrollDirection: Axis.vertical,
);
Но фатальная проблема: Wrap не может лениво создавать виджеты. Например, если на изображении выше отображается менее 100 виджетов плитки, но количество списков данных больше, Wrap создает даже невидимые виджеты.
// The result of taking a log once for each item when configuring Wrap with a list of 1000 data.
I/flutter ( 4437): create Widget 0
I/flutter ( 4437): create Widget 1
I/flutter ( 4437): create Widget 2
I/flutter ( 4437): create Widget 3
I/flutter ( 4437): create Widget 4
I/flutter ( 4437): create Widget 5
I/flutter ( 4437): create Widget 6
I/flutter ( 4437): create Widget 7
I/flutter ( 4437): create Widget 8
...
I/flutter ( 4437): create Widget 999
ListView и GridView создают виджеты лениво, но (по крайней мере, насколько мне известно) они не могут размещать виджеты, такие как Wrap.
Есть ли способ реализовать нужный мне макет?
1 ответ
Попробуй это:
Wrap(
children: someItems.map((item) => _createTile(context, item)).toList().cast<Widget>(),
)