flutter 如何从Sqflite获取数据并等待它,然后显示它

f0ofjuux  于 2023-01-31  发布在  Flutter
关注(0)|答案(1)|浏览(131)

我正在尝试从数据库中获取“任务”列表
我通过openDatabase函数的onOpen()获取数据,并将数据存储在另一个名为constants.dart的dart文件的List中,该文件包含List<Map<dynamic, dynamic>>? tasks;
这就是我如何得到数据

import '../shared/components/constants.dart';

onOpen: (database) {
  getFromDatabase(database).then((value) {
    tasks = value;
    print(tasks);
  });
}

任务打印成功
现在我需要访问另一个文件current_tasks.dart中的数据,因此我从该文件导入了任务,以便从tasks构建ListView

import '../../shared/components/constants.dart';

itemCount中我尝试调用tasks.length

itemCount: tasks.length

但我出错了

The property 'length' can't be unconditionally accessed because the receiver can be 'null'

我试着在tasks之后添加!

itemCount: tasks!.length

但我得到了这个错误

Null check operator used on a null value

我认为我必须等待数据库获取数据,然后构建ListView,但我不知道如何构建

3qpi33ja

3qpi33ja1#

错误可能是你所说的,getFromDatabase是一个未来的方法,所以它需要一些时间来获取值,当你调用tasks!. length时,tasks还没有准备好,并且是null。你可以做类似的事情

onOpen: (database) async{
  getFromDatabase(database).then((value) {
    tasks = value;
    print(tasks);
  });
}

当你使用onOpen方法的时候,输入await onOnpen。2更多的信息请看未来的方法。3我希望这能帮助你。

相关问题