dart Flutter Unhandled Exception -对空值使用空检查运算符

eanckbw9  于 2023-07-31  发布在  Flutter
关注(0)|答案(4)|浏览(135)

我不知道为什么我得到了空值错误使用的空检查运算符。在将其添加到列表之前,我使用了一个if条件来检查它是否是。
在print语句的下面打印预期的数据。问题出在我在for循环中对列表进行加法的那一行上。

Future<List<String>?> fetchContacts(List<String> contacts) async {
    QueryResult result = await _client().query(
      QueryOptions(
        document: gql(_fetchContacts),
        variables: {
          'contacts': contacts,
        },
      ),
    );
    List<String>? contacts;

    if (result.data != null) {
      int status = result.data!['fetchContacts']['status'];
      int resultCount = result.data!['fetchContacts']['users'].length;

      if (status == 200 && resultCount != 0) {
        for (int i = 0; i < resultCount; i++) {
          if (result.data?['fetchContacts']['users'][i]['userPhoneNumber'] !=
              null) {
            contacts!.add(result.data?['fetchContacts']['users'][i]
                ['userPhoneNumber']);
            print(result.data!['fetchContacts']['users'][i]
                ['userPhoneNumber']);
          }
        }
      }
    }
    return contacts;
  }

字符串

4dc9hkyq

4dc9hkyq1#

你永远不会初始化你的列表。不要将其设置为空,而是尝试将其设置为空:

List<String> contacts = [];

字符串

kh212irz

kh212irz2#

如果你想让你的列表为空,请使用下面的代码

Future<List<String>?> fetchContacts(List<String> contacts) async {
    QueryResult result = await _client().query(
      QueryOptions(
        document: gql(_fetchContacts),
        variables: {
          'contacts': contacts,
        },
      ),
    );
    List<String>? contacts;

    if (result.data != null) {
      contacts=[];  //Initialize list here
      int status = result.data!['fetchContacts']['status'];
      int resultCount = result.data!['fetchContacts']['users'].length;

      if (status == 200 && resultCount != 0) {
        for (int i = 0; i < resultCount; i++) {
          if (result.data?['fetchContacts']['users'][i]['userPhoneNumber'] !=
              null) {
            contacts!.add(result.data?['fetchContacts']['users'][i]
                ['userPhoneNumber']);
            print(result.data!['fetchContacts']['users'][i]
                ['userPhoneNumber']);
          }
        }
      }
    }
    return contacts;
  }

字符串

qzwqbdag

qzwqbdag3#

我在这里看到的问题是你没有初始化联系人列表变量。你提到它是一个空值,但你没有检查天气是否为空。在没有初始化变量列表的情况下,您已经调用了add函数。这就是为什么你得到了异常消息。
int [];

snz8szmq

snz8szmq4#

我建议在使用之前初始化你的联系人列表。在这种情况下,您不必担心空检查。

List<String> contactsList = [];

字符串
或者,您可以在使用它之前检查它是否为null:

if (contactsList != null){
        rest of your code here
    }

相关问题