LateInitializationError: Field 'snapshot' has not been initialized

150

You need to initialise the snapshot list in the init() as:

  @override
  void initState() {
    super.initState();
    snapshots = [];// add this line
    subscription = collectionReference
        .orderBy('createdAt', descending: false)
        .snapshots()
        .listen((dataSnapshot) {
      setState(() {
        snapshot = dataSnapshot.docs;
      });
    });
  }
Share:
150
Happy
Author by

Happy

Updated on January 04, 2023

Comments

  • Happy
    Happy over 1 year

    There is no error in this code but this error is coming after running, Can someone please provide an example code of what's needed to solve for the error below? "LateInitializationError: Field 'snapshot' has not been initialized, got error"

    import 'dart:async';
    import 'package:cached_network_image/cached_network_image.dart';
    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:flutter/material.dart';
    import 'package:utsucare_sample/PostScreen.dart';
    
    class HomeScreen extends StatefulWidget {
      const HomeScreen({Key? key}) : super(key: key);
    
      @override
      State<HomeScreen> createState() => _HomeScreenState();
    }
    
    class _HomeScreenState extends State<HomeScreen> {
      //Declaring some variables:
      late StreamSubscription<QuerySnapshot> subscription;
      late List<DocumentSnapshot> snapshot;
    
      CollectionReference collectionReference =
          FirebaseFirestore.instance.collection('Article');
    
      passData(DocumentSnapshot snap) {
        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (context) => PostScreen(snapshot: snap),
          ),
        );
      }
    
      @override
      void initState() {
        super.initState();
        subscription = collectionReference
            .orderBy('createdAt', descending: false)
            .snapshots()
            .listen((dataSnapshot) {
          setState(() {
            snapshot = dataSnapshot.docs;
          });
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            backgroundColor: Colors.transparent,
            elevation: 0,
            title: const Text(
              'Messages',
              style: TextStyle(color: Colors.black87),
            ),
          ),
          body: SafeArea(
            child: Column(
              children: [
                SizedBox(
                  height: 100,
                  child: Padding(
                    padding: const EdgeInsets.symmetric(horizontal: 20),
                    child: ListView.builder(
                      itemCount: snapshot.length,
                      shrinkWrap: true,
                      scrollDirection: Axis.horizontal,
                      itemBuilder: (context, index) {
                        return InkWell(
                          onTap: () {
                            passData(snapshot[index]);
                          },
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.end,
                            children: [
                              Padding(
                                padding: const EdgeInsets.all(10.0),
                                child: CircleAvatar(
                                  radius: 25.0,
                                  backgroundImage: CachedNetworkImageProvider(
                                    snapshot[index]['imgUrl'],
                                  ),
                                ),
                              ),
                            ],
                          ),
                        );
                      },
                    ),
                  ),
                ),
                const SizedBox(height: 50),
                Expanded(
                  child: ListView.builder(
                    itemCount: snapshot.length,
                    shrinkWrap: true,
                    itemBuilder: (BuildContext context, int index) {
                      return InkWell(
                        onTap: () {
                          passData(snapshot[index]);
                        },
                        child: Column(
                          children: [
                            Padding(
                              padding: const EdgeInsets.all(15.0),
                              child: ListTile(
                                onTap: () {
                                  passData(snapshot[index]);
                                },
                                leading: CircleAvatar(
                                  radius: 30.0,
                                  backgroundImage: CachedNetworkImageProvider(
                                      snapshot[index]['imgUrl']),
                                ),
                                title: Text(snapshot[index]['title']),
                                subtitle: Text(snapshot[index]['name']),
                              ),
                            ),
                          ],
                        ),
                      );
                    },
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    

    Error Description in Android Studio:

    ======== Exception caught by widgets library =======================================================
    The following LateError was thrown building SearchScreen(dirty, state: _SearchScreenState):
    LateInitializationError: Field 'snapshot' has not been initialized.
    

    What am I doing wrong here? I'd really appreciate some help. Thank you.