可迭代的toList()引发-ArgumentError(无效的参数(输入):不能为null)

时间:2020-07-20 02:09:34

标签: list flutter dart iterable

我正在尝试列出我的迭代列表,但是会引发以下错误

发生异常。 ArgumentError(无效的参数(输入): 不能为空)

的toList()上
List<ContactModel> iterable = (await pluginContactService.ContactsService.getContacts(withThumbnails: false))
    .where((contact) => contact.phones.firstWhere((item) => item.label == 'mobile', orElse: () => null)?.value != null)
    .map((contact) => ContactModel(
        contact.displayName, contact.phones.firstWhere((item) => item.label == 'mobile').value)).toList(growable: false);

它会不断重复此异常。如果我关闭了例外,则会返回一个包含预期结果的列表。该异常该怎么办?

2 个答案:

答案 0 :(得分:0)

此错误:ArgumentError(Invalid argument(s) input: must not be null)意味着.toList(growable: false);null上进行了呼叫。

因此,在调用.toList()或使用诸如?? []之类的默认值之前,您应该检查它是否为空。

?? []可以解决。

final tmp = (await pluginContactService
    .ContactsService
    .getContacts(withThumbnails: false)
)
    .where(
       (contact) => contact.phones.firstWhere(
        (item) => item.label == 'mobile', 
        orElse: () => null
       )?.value != null
    )
    .map((contact) => ContactModel(
        contact.displayName, 
        contact.phones.firstWhere(
           (item) => item.label == 'mobile'
        ).value)
     );
List<ContactModel> iterable = tmp == null? [] : tmp.toList(growable: false);

答案 1 :(得分:-1)

enter image description here

在调试会话设置中关闭“Break on All Exception”可以解决这个问题。