使用sqlite数据库时出现错误flutter _CastError(对空值使用了空值检查运算符)

wnrlj8wa  于 2022-12-04  发布在  SQLite
关注(0)|答案(1)|浏览(144)

我的flutter数据库有问题,我正在使用sqlite数据库,当我想运行它时,我有错误说_CastError(空值检查操作符用于空值)。我已经在我的代码中使用(!),但仍然相同,有人能帮助我吗
dbhelbper中的代码

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

我来自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'),
                      ],
                    )

请帮助我,我需要立即完成它
对不起,我英语不好
我希望任何人都能帮助我解决这个问题

mcdcgff0

mcdcgff01#

首先要保证databasedistribusi不为空,注意不检查空就直接使用!
并在空情况下返回空列表

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;
  }

对于未来构建者

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
            }

有关使用FutureBuilderunderstanding-null-safety的详细信息

相关问题