#flutter #dart
Вопрос:
Я хочу отфильтровать данные в flutter. Но когда я фильтрую данные, длина списка равна нулю. Я хочу фильтровать на основе множественного выбора пользователем. Вот мой код:
Статус списка = [ «Пн», «Вт», «Ср», «Чт», «Пт», ];
Content(
title: 'Filter Days',
child: FormField<List<String>>(
// ignore: deprecated_member_use
autovalidate: true,
initialValue: appsTags,
builder: (state) {
return Column(
children: <Widget>[
Container(
alignment: Alignment.centerLeft,
child: ChipsChoice<String>.multiple(
value: state.value,
options: ChipsChoiceOption.listFrom<String,
String>(
source: status,
value: (i, v) => v,
label: (i, v) => v,
),
onChanged: (val) {
state.didChange(val);
if (this.mounted) {
setState(() {
list = apps
.where((i) => i['status'] == val
).toList();
});
}
print(list.length);
},
itemConfig: ChipsChoiceItemConfig(
selectedColor: AppColors.primaryAccentColor,
selectedBrightness: Brightness.dark,
unselectedColor:
AppColors.primaryAccentColor,
unselectedBorderOpacity: .3,
),
isWrapped: true,
),
),
],
);
},
),
),
Комментарии:
1. всем привет. Вместо публикации полного кода добавьте только минимальный воспроизводимый образец, содержащий исходный список, способ фильтрации, его выходные данные и то, что вы ожидали.
2. @NisanthReddy Хорошо, я переоденусь
3. Я полагаю, вы имеете в виду линию
list = apps.where(...)
. В чем заключается содержаниеapps
?4. Да, верно @Gpack
Ответ №1:
Я только что изменил содержимое метода OnChanged() :
setState(() {
list = apps
.where((i) =>
val.contains(i['status'])
).toList();
});