从json API flutter获取值

1aaf6o9v  于 2023-01-09  发布在  Flutter
关注(0)|答案(2)|浏览(143)

我有一个API,并从他们那里获得数据。
实际上,我想改变框的颜色,如果任何字符串存在于查询.
目前,我检查最后一个是否是。
我使用的代码:

border: Border(
                  left: BorderSide(
                      color: model.data[model.data.length - 1].desc ==
                              'DONE'
                          ? greenColor
                          : redColor,
                      width: 3.0)),

只有当DONE单词存在于查询的最后一个值中时,边框才是绿色的,但如果存在但不在最后一个值中,则边框是红色的。在某些情况下,它可以在倒数第二个位置或中间的某个位置。它并不总是最后一个。检查单词DONE是否存在于JSON查询中,无论它在序列中的位置如何。
JSON:

[
   {
      "id":"123",
      "title":"Alpha",
      "desc":"NEW"
   },
   {
      "id":"123",
      "title":"Alpha",
      "desc":"DONE"
   },
   {
      "id":"123",
      "title":"Alpha",
      "desc":"IN PROGRESS"
   }
]

您是否需要更多信息来给我一个解决方案?
谢谢。

b1zrtrql

b1zrtrql1#

  • indexWhere可以解决此问题
  • 范例
model.data.indexWhere((m) => m.desc == 'DONE')? greenColor : redColor
o3imoua4

o3imoua42#

您可以通过多种方式进行归档

Color borderColor = Colors.red;

//1st way 
final index = model.data.indexWhere((element) => element.desc == "DONE"); // Return -1 If 'DONE' is not found
debugPrint("index of Done $index"); 
borderColor = index != -1 ? Colors.green : Colors.red;

//2nd way 
final isDone = model.data.map((e) => e.desc == "DONE").toList().isNotEmpty; // Return false If 'DONE' is not found
debugPrint("If Done exists $isDone");
borderColor = isDone ? Colors.green : Colors.red;

Put line in your code

模型.数据.索引位置((元素)=〉元素.描述==“完成”)?绿色颜色:红色

相关问题