Оператор проверки на пустоту, используемый для нулевого значения, тип «Строка» не является подтипом типа «int» «индекса»

# #firebase #flutter #dart #google-cloud-firestore

Вопрос:

Я пытаюсь извлечь данные из firebase и отобразить их на экране с помощью карты. Но я сталкиваюсь со следующей ошибкой :

 Null check operator used on a null value
type 'String' is not a subtype of type 'int' of 'index'
 

Обе эти ошибки я проследил до следующего фрагмента кода. Часть «Дети» в представлении «Список» показывает ошибку, связанную с тем, во что я верю. Есть какие-нибудь предложения по поводу того, что мне следует изменить?

   StreamBuilder<QuerySnapshot>(
                              stream: FirebaseFirestore.instance
                                  .collection('orders')
                                  .where('SalonID', isEqualTo: widget.aadhar)
                                  .where('Status', isEqualTo: "1")
                                  .snapshots(),
                              builder: (context, snapshot) {
                                return ListView(
                                  physics: NeverScrollableScrollPhysics(),
                                  shrinkWrap: true,
                                  children: snapshot.data.docs
                                      .asMap()
                                      .map((index, DocumentSnapshot document) {
                                        getCustomerDetails(
                                            document['CustomerID']);
                                        DateTime bookingdate = DateTime.parse(
                                            document['BookingDate']);

                                        num total = 0;
                                        List<dynamic> services =
                                            document['Requested_Service'];

                                        services.forEach((element) {
                                          total  = element['price'];
                                        });

                                        return MapEntry(
                                          index,
                                          AppointmentCard(
                                            paymentMode: document['payment'],
                                            // paymentMode: document['payment'],
                                            date:
                                                '${bookingdate.day.toString()}-${bookingdate.month}-${bookingdate.year}',
                                            price: "$total",
                                            orderid: document['OrderID'],
                                            onPressed: () {
                                              print("Hello");
                                              _showMyDialog();
                                            },
                                            isCompleted: document['Status'],
                                            name: customerDetails[index]
                                                ['Name'],
                                            contact: customerDetails[index]
                                                ['Contact'],
                                            services: Flexible(
                                              child: ListView.builder(
                                                  shrinkWrap: true,
                                                  padding:
                                                      const EdgeInsets.all(8),
                                                  itemCount: document[
                                                          'Requested_Service']
                                                      .length,
                                                  itemBuilder:
                                                      (BuildContext context,
                                                          int index) {
                                                    return Text(document[
                                                            'Requested_Service']
                                                        [index]['name']);
                                                  }),
                                            ),
                                          ),
                                        );
                                      })
                                      .values
                                      .toList(),
                                );
//                                  if (ordersList.isEmpty) {
//                                    return SpinKitThreeBounce(
//                                      color: Colors.red,
//                                    );
//                                  } else {
//
//                                  }
                              },
                            ),
 

Комментарии:

1. вы можете поделиться своими данными json?

2. {Дата бронирования: 2021-07-26 22:27:19.219045, Статус: 3, Всего мест: 3, Расстояние до салона: 0,15, Запрошенная услуга: [{цена: 100, название: Стрижки}], Идентификатор салона: 101010010, Идентификатор клиента: r6bXvFn4QxUT69kT5H2svgfhNYJ3, слот: 5, Идентификатор заказа: 2321039898, Адрес салона: null, Дата: 9-1-2021, Контакт: 919560656283, цена: 100, временной интервал: 21:00 — 22:00, имя: гость, имя в салоне: Салон отдыха, оплата: POD} Это данные списка заказов

3. [{Email: null, Идентификатор пользователя: r6bXvFn4QxUT69kT5H2svgfhNYJ3, Пол: null, Идентификатор пользователя: 2557, Дата: Отметка времени(секунды=15985449494, наносекунды=869000000), Имя: гость, Контакт: 919560656283}] Это данные пользовательских данных