Ошибка Flutter | FireStore: Ошибка диапазона (индекс): Индекс вне диапазона: индекс должен быть меньше 1: 1

# #javascript #firebase #flutter #dart

Вопрос:

Я пытаюсь получить список документов из коллекции, но у меня ошибка «вне зоны действия». Вы можете увидеть функцию, которая возвращает список, а затем вывод.

 Future<List> getPreAppliedUserList() async {
    try {
      List? userList = [""];
      QuerySnapshot querySnapshot =
          await _db!.collection(_preAppliedUserCollection).get();
      List allData = querySnapshot.docs.map((doc) => doc.data()).toList();
      print(allData.length); /// 2
      for (int i = 0; i <= allData.length; i  ) {
        userList[i] = await allData[i]['customerNumber'];
      }
      return userList;
    } on FirebaseException {
      print("getPreAppliedUserList error");
      var x; ///todo
      return x;
    }
  }
 

Ошибка:

 Error: RangeError (index): Index out of range: index should be less than 1: 1
 

Ответ №1:

Массивы проиндексированы на 0, а allData.length длина равна 2. Поэтому вам следует использовать:

 for (int i = 0; i < allData.length; i  ) {
    userList[i] = await allData[i]['customerNumber'];
}
 

это означает, что удалите <= и замените его, < так как у вас нет элемента с индексом 2