gpt4 book ai didi

list - Dart/Flutter如何基于列表中的值以编程方式过滤ListBuilder

转载 作者:行者123 更新时间:2023-12-03 03:16:22 24 4
gpt4 key购买 nike

我在想有几种不同的方法可以做到这一点,但是在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出示……不确定该支票为什么不起作用?

我在我的futurebuilder中尝试过:
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();
}),

但是,它返回了我所有的结果...

我的最后一次尝试是返回一个已经过滤掉值的列表,但是我不希望那样,因为我想控制将来屏幕上显示的TYPE。

如果没有显示这些内容,我在做什么错?

最佳答案

有一种更简单的语法可以使用where过滤列表,例如:

  List<SnoTelSiteModel> sites;
return sites.where((site) => site.type == 'SNTL').toList();

您将来可以使用其他类型(当然,也可以动态使用)来按不同类型过滤列表。

关于list - Dart/Flutter如何基于列表中的值以编程方式过滤ListBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58225309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com