#flutter
#трепетание
Вопрос:
я реализовал ListView в flutter, и он показывает количество продуктов = 5, но я хотел, чтобы эти 5 элементов генерировались случайным образом, есть ли способ это сделать? заранее спасибо ps: я пробовал код в зависимости от ответа ниже, но он выдает количество ошибок! = null
Expanded(
child: SizedBox(
height: 210.0,
child: FutureBuilder(
future: httpService.getProducts(),
builder:
(BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.data == null) {
return Container(
child: Center(
child: Text('Loading...'),
),
);
} else if (snapshot.data.length == 0) {
return Container(
child: Center(
child: Center(
child: Text('No offers'),
),
),
);
} else {
var rndItems = snapshot.data.shuffle();
return ListView.separated(
separatorBuilder:
(BuildContext context, int index) {
return SizedBox(height: 3);
},
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: rndItems ,
itemBuilder: (ctx, i) => (PdtItem(
title: snapshot.data[i].title,
imgUrl: snapshot.data[i].imgUrl,
price: snapshot.data[i].price,
pdt2: snapshot.data[i])),
);
Комментарии:
1. Вы имеете в виду, что вам нужен снимок. данные должны быть перечислены в случайном порядке?
2. да, точно, я хочу, чтобы itemcount равнялся случайным элементам из snapshot.data
3. Попробуйте
itemCount: Random.nextInt(snapshot.data.length)
4. отображается ошибка, член экземпляра ‘nextInt’ не может быть доступен с помощью статического доступа.
Ответ №1:
Если вам нужны элементы из моментального снимка.данные должны быть перечислены в случайном порядке, затем вы можете перетасовать данные следующим образом :
....
snapshot.data.shuffle();
....
Если вы хотите отображать случайное количество элементов каждый раз, то
....
import 'dart:math';
....
var rng = new Random();
var rndItems = rng.nextInt(snapshot.data.length);
....
.....
scrollDirectionn: Axis.horizontal,
shrinkWrap: true,
itemCount: rndItems,
itemBuilderr: (ctx, i) => (PdtItem(
.....
Комментарии:
1. спасибо за ответ, я попробовал второй, и он показывает мне ошибку, элемент экземпляра ‘rng’ недоступен в инициализаторе. Попробуйте заменить ссылку на элемент экземпляра другим выражением
2. Вы добавили строку >>> import ‘dart:math’; << в верхней части кода?
3. Я также попробовал ItemCount:snapshot.data.shuffle(), и это не сработало, сообщение об ошибке: ItemCount!= null
4. Если вы добавляете импорт, добавьте строку >>> var rng = new Random(); var rndItems = rng.nextInt(snapshot.data.length); <<< после snapshot.hasdata . Затем обязательно используйте >>> ItemCount: rndItems, <<<
5. я обновил свой вопрос, потому что они тоже не сработали, если вы, пожалуйста, можете помочь