Я думаю, что есть несколько разных способов сделать это, но во Flutter мне нужно отфильтровать значения из моего списка. Значения являются sts [index] .type. Я вижу, что все записи отображаются правильно с этим построителем:
return ListView.builder(
itemCount: sts == null ? 0 : sts.length,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Container(
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsDaily(site: sts[index]),
),
);
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Text(
sts[index].name,
style: TextStyle(fontSize: 20.0, color: Colors.black),
),
],
)),
padding: const EdgeInsets.all(15.0),
),
);
}
});
Я попытался if / else отфильтровать значения:
return ListView.builder(
itemCount: sts == null ? 0 : sts.length,
itemBuilder: (BuildContext context, int index) {
if (sts[index].type == "SNTL") {
//return the widget with only SNTL types
}
Однако у меня возникает проблема с необходимостью показавозврат ... однако, я хочу, чтобы только показывали SNTL ... не уверен, почему эта проверка не сработает ???
Я пытался в моем будущем Builder:
FutureBuilder(
future: DefaultAssetBundle.of(context)
.loadString('assets/stations-strings.json'),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<SnoTelSiteModel> sites =
parseJson(snapshot.data.toString());
for(var s in sites){
if(s.type == "SNTL"){
return SnotelList(sts: sites);
}
}
}
return CircularProgressIndicator();
}),
Тем не менее, он возвращает все мои результаты ...
Моя последняя попытка - вернуть список с уже отфильтрованными значениями, но я не хочу этого, так как я хотел бы контролировать, какой ТИП отображается вэкран в будущем.
Что я делаю не так в моем if / else, что они не отображаются?