0

i have trouble with my flutter database , i'm using sqlite for database and when i want to run it i have error said that _CastError (Null check operator used on a null value). i already use (!)in my code but still the same ,can anybody help me

my code in dbhelbper

Future<List<DistribusiModel>> getAll() async {
    final data = await _database!.query(namaTabel);
    List<DistribusiModel> result =
        data.map((e) => DistribusiModel.fromJson(e)).toList();
    return result;
  }

my code from main.dart

 FutureBuilder<List<DistribusiModel>>(
              future: databasedistribusi!.getAll(),
              builder: (context, snapshot) {
                print('Hasil: ' + snapshot.data!.toString());
                return ListTile(
                    title: Text('Algoritma dan Pemrograman I'),
                    trailing: Wrap(
                      children: [
                        Text(
                          '3',
                          style: TextStyle(color: Colors.black),
                        ),
                        SizedBox(
                          width: 20,
                        ),
                        Text(
                          'A',
                          style: TextStyle(color: Colors.black),
                        ),
                        SizedBox(
                          width: 20,
                        ),
                        Text('LULUS'),
                      ],
                    )

please help me , i need to finish it immediately

sorry for my bad english

i hope anyone can help me whit this problem

Md. Yeasin Sheikh
  • 54,221
  • 7
  • 29
  • 56
Alyik
  • 1

1 Answers1

0

Firstly make sure the databasedistribusi is not null. Beware of using ! directly without checking null.

and return empty list on null case

Future<List<DistribusiModel>> getAll() async {
    if(_database==null) return [];
    final data = await _database.query(namaTabel);
    List<DistribusiModel> result =
        data.map((e) => DistribusiModel.fromJson(e)).toList();
    return result;
  }

And for the FutureBuilder

 FutureBuilder<List<DistribusiModel>>(
              future: databasedistribusi?.getAll(),
              builder: (context, snapshot) {
                if(snapshot.hasError) return Text("got Error");

                else if(snapshot.hasData){
                   if(snapshot.data.isEmpty) return Text("EmptyData");
                   else return ListView(....);
                }

                return CircularProgressIndicator(); //default
            }

More about using FutureBuilder and understanding-null-safety

Md. Yeasin Sheikh
  • 54,221
  • 7
  • 29
  • 56