ERROR:flutter/lib/ui/ui_dart_state.cc(177) Unhandled Exception: NoSuchMethodError: The method 'insert' was called on null

7,395

In dart, we define lists and maps like this:

static List<Map<String, dynamic>> reservations = [];
static Map<String, dynamic> documents = {};
List<QueryDocumentSnapshot> documents2 = [];

If you want to learn more, read this topic about lists in dart.

Maps are mostly the same.

Share:
7,395
Admin
Author by

Admin

Updated on December 26, 2022

Comments

  • Admin
    Admin over 1 year

    Hello im a beginning flutter dev and i want to make a list with data from my cloud firestore database. I dont have any clue how should i do it. any help or advices about my code would be muchly appreciated

    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:dinghy1/components/default_button.dart';
    import 'package:dinghy1/services/reservations.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_svg/flutter_svg.dart';
    
    import '../../../constants.dart';
    import '../../../size_config.dart';
    
    class Body extends StatefulWidget {
      @override
      _BodyState createState() => _BodyState();
    }
    
    class _BodyState extends State<Body> {
      static List<Map<String, dynamic>> reservations;
      static Map<String, dynamic> documents;
      static List<QueryDocumentSnapshot> documents2;
      static int index;
      bool visibility = false;
      String rental = ReservationService.rental;
      @override
      Widget build(BuildContext context) {
        return SingleChildScrollView(
          child: SafeArea(
            child: Column(
              children: [
                SizedBox(
                  height: getPropotionateScreenWidth(20),
                ),
                Padding(
                  padding: EdgeInsets.symmetric(
                      horizontal: getPropotionateScreenWidth(20)),
                  child: Container(
                    decoration: BoxDecoration(
                        color: kPrimaryColor.withOpacity(0.4),
                        borderRadius: BorderRadius.circular(30)),
                    height: getPropotionateScreenHeight(75),
                    width: double.infinity,
                    child: Center(
                      child: Text(
                        "Sprawdź rezerwacje",
                        style: TextStyle(
                            fontSize: getPropotionateScreenWidth(20),
                            fontWeight: FontWeight.bold),
                        textAlign: TextAlign.center,
                      ),
                    ),
                  ),
                ),
                SizedBox(
                  height: getPropotionateScreenWidth(20),
                ),
                DatePicker(),
                SizedBox(
                  height: getPropotionateScreenWidth(20),
                ),
                Padding(
                  padding: EdgeInsets.symmetric(
                      horizontal: getPropotionateScreenWidth(20)),
                  child: DefaultButton(
                    text: "Sprawdź",
                    press: () {
                      final FirebaseAuth auth = FirebaseAuth.instance;
                      final User user = auth.currentUser;
                      String uid = user.uid;
                      FirebaseFirestore.instance
                          .collection("users")
                          .doc(uid)
                          .get()
                          .then((DocumentSnapshot documentSnapshot) {
                        if (documentSnapshot.exists) {
                          rental = documentSnapshot['rental'].toString();
                          ReservationService()
                              .getReservations(
                                  rental,
                                  _DatePickerState.selectedDate
                                      .toString()
                                      .split(" ")[0])
                              .then((QuerySnapshot docs) {
                            if (docs.docs.isNotEmpty) {
                              int i = 0;
                              index = docs.size - 1;
                              print(index);
                              while (i <= index) {
                                documents = docs.docs[i].data();
                                if (documents != null) {
                                  reservations.insert(i, documents);
                                  i++;
                                  print(documents);
                                }
                              }
                            }
                          });
                        }
                      });
                      setState(() {
                        RentCard.name = documents['name'];
                        visibility = true;
                      });
                    },
                  ),
                ),
                SizedBox(
                  height: getPropotionateScreenWidth(20),
                ),
                visibility == true
                    ? new Padding(
                        padding: EdgeInsets.symmetric(
                            horizontal: getPropotionateScreenWidth(20)),
                        child: Column(
                          children: [
                            // ...List.generate(
                            //   documents2.length,
                            //   (index) => RentCard(reservations: reservations[0]),
                            // ),
                          ],
                        ),
                      )
                    : new Text(
                        'Wybierz date i naciśnij przycisk aby sprawdzić rezerwacje!')
              ],
            ),
          ),
        );
      }
    }
    

    Here's the code sample that is making an error

    E/flutter ( 5082): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'insert' was called on null.
    E/flutter ( 5082): Receiver: null
    E/flutter ( 5082): Tried calling: insert(0, _LinkedHashMap len:7)
    E/flutter ( 5082): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
    E/flutter ( 5082): #1      _BodyState.build.<anonymous closure>.<anonymous closure>.<anonymous closure>
    package:dinghy1/…/components/body.dart:89
    E/flutter ( 5082): #2      _rootRunUnary (dart:async/zone.dart:1198:47)
    E/flutter ( 5082): #3      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
    E/flutter ( 5082): #4      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
    E/flutter ( 5082): #5      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
    E/flutter ( 5082): #6      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
    E/flutter ( 5082): #7      Future._completeWithValue (dart:async/future_impl.dart:529:5)
    E/flutter ( 5082): #8      _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
    E/flutter ( 5082): #9      _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
    E/flutter ( 5082): #10     Query.get (package:cloud_firestore/src/query.dart)
    package:cloud_firestore/src/query.dart:1
    E/flutter ( 5082): <asynchronous suspension>
    E/flutter ( 5082): #11     ReservationService.getReservations
    package:dinghy1/services/reservations.dart:19
    E/flutter ( 5082): #12     _BodyState.build.<anonymous closure>.<anonymous closure>
    package:dinghy1/…/components/body.dart:76
    E/flutter ( 5082): #13     _rootRunUnary (dart:async/zone.dart:1198:47)
    E/flutter ( 5082): #14     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
    E/flutter ( 5082): #15     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
    E/flutter ( 5082): #16     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
    E/flutter ( 5082): #17     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
    E/flutter ( 5082): #18     Future._completeWithValue (dart:async/future_impl.dart:529:5)
    E/flutter ( 5082): #19     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
    E/flutter ( 5082): #20     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
    E/flutter ( 5082): #21     DocumentReference.get (package:cloud_firestore/src/document_reference.dart)
    package:cloud_firestore/src/document_reference.dart:1
    E/flutter ( 5082): <asynchronous suspension>
    E/flutter ( 5082): #22     _BodyState.build.<anonymous closure>
    package:dinghy1/…/components/body.dart:71
    E/flutter ( 5082): #23     _InkResponseState._handleTap
    package:flutter/…/material/ink_well.dart:993
    E/flutter ( 5082): #24     _InkResponseState.build.<anonymous closure>
    package:flutter/…/material/ink_well.dart:1111
    E/flutter ( 5082): #25     GestureRecognizer.invokeCallback
    package:flutter/…/gestures/recognizer.dart:183
    E/flutter ( 5082): #26     TapGestureRecognizer.handleTapUp
    package:flutter/…/gestures/tap.dart:598
    E/flutter ( 5082): #27     BaseTapGestureRecognizer._checkUp
    package:flutter/…/gestures/tap.dart:287
    E/flutter ( 5082): #28     BaseTapGestureRecognizer.handlePrimaryPointer
    package:flutter/…/gestures/tap.dart:222
    E/flutter ( 5082): #29     PrimaryPointerGestureRecognizer.handleEvent
    package:flutter/…/gestures/recognizer.dart:476
    E/flutter ( 5082): #34     PointerRouter.route
    package:flutter/…/gestures/pointer_router.dart:106
    E/flutter ( 5082): #35     GestureBinding.handleEvent
    package:flutter/…/gestures/binding.dart:358
    E/flutter ( 5082): #36     GestureBinding.dispatchEvent
    package:flutter/…/gestures/binding.dart:338
    E/flutter ( 5082): #37     RendererBinding.dispatchEvent
    package:flutter/…/rendering/binding.dart:267
    E/flutter ( 5082): #38     GestureBinding._handlePointerEvent
    package:flutter/…/gestures/binding.dart:295
    E/flutter ( 5082): #39     GestureBinding._flushPointerEventQueue
    package:flutter/…/gestures/binding.dart:240
    E/flutter ( 5082): #40     GestureBinding._handlePointerDataPacket
    package:flutter/…/gestures/binding.dart:213
    E/flutter ( 5082): #41     _rootRunUnary (dart:async/zone.dart:1206:13)
    E/flutter ( 5082): #42     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
    E/flutter ( 5082): #43     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
    E/flutter ( 5082): #44     _invoke1 (dart:ui/hooks.dart:265:10)
    E/flutter ( 5082): #45     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
    E/flutter ( 5082):
    
    
    

    Here's an error message. If someone could help me fix that, i would went insane from happiness