“字符串”不是“索引”的“ int”类型的子类型

时间:2020-09-30 09:55:23

标签: flutter dart

我试图将列表存储到本地数据库。例子

[{id: 29, inspection_id: 25}]  // output for time:i['inspection']['time']

我使用此代码

   var value = json.decode(response.body);
      for (var i in value['requests']) {
      await _dao.insert(ABC(time:i['inspection']['time']));
    }

如果i['inspection']['time]不为空,则可以正常工作,但是如果为[]为空,则输入'String' is not a subtype of type 'int' of 'index'

如何检查它是否为空,它不会插入数据库中,所以我可以摆脱此错误?

请帮助,我在哭。

修改

 var a = i['current_inspection']['time'].toString();
 print("a "+a);

将打印该值,但是如果列表为空,则会抛出错误。

1 个答案:

答案 0 :(得分:1)

您的问题可能是因为您缺少字符串的结尾引号,这可以解释错误消息,请尝试:

var value = json.decode(response.body);
      for (var i in value['requests']) {
      await _dao.insert(ABC(time:i['inspection']['time']));
    }

另一方面,要检查dart中的列表是否为空,只需使用List.isEmpty。

使用三元运算符,检查列表是否为空,如下所示:

 var a = i['current_inspection']['time'].isEmpty? #default value: i['current_inspection']['time'].toString();

这应该有效。