Sqlite 错误:方法';[]和#x27;isn';t为类定义';未来<;列表<;动态>&燃气轮机;函数()';

Sqlite 错误:方法';[]和#x27;isn';t为类定义';未来<;列表<;动态>&燃气轮机;函数()';,sqlite,flutter,dart,provider,Sqlite,Flutter,Dart,Provider,我是一个新手,我真的不知道如何将sqlite数据库与提供者一起使用。尽管我已经用提供者创建了一个todo应用程序,并且成功地向其中添加了sqlite数据库。但在获取数据时,我的listViewBuilder小部件中出现了错误 错误:未为类“Future>Function()”定义方法“[]” 这是我的密码 数据库连接.dart FuturegetTasks()异步{ 等待openDb(); final Listmaps=wait_database.query('tasks'); 印刷(地图);

我是一个新手,我真的不知道如何将sqlite数据库与
提供者一起使用。尽管我已经用
提供者创建了一个todo应用程序,并且成功地向其中添加了
sqlite数据库
。但在获取数据时,我的
listViewBuilder
小部件中出现了错误

错误:未为类“Future>Function()”定义方法“[]”

这是我的密码

数据库连接.dart

FuturegetTasks()异步{
等待openDb();
final Listmaps=wait_database.query('tasks');
印刷(地图);
返回列表。生成(maps.length,(i){
返回任务(
id:maps[i]['id'],
名称:地图[i]['title'],
日期:地图[i][“日期”],
isDone:maps[i]['iscomplete']==1?true:false,
);
});
}
taskData.dart

class TaskData扩展ChangeNotifier{
final TaskDatabaseManager TaskDatabaseManager=新建TaskDatabaseManager();
列表_任务=[
任务(名称:“购买咖啡”),
任务(名称:“去购物”),
任务(名称:'进入睡眠'),
];
//不可修改的ListView获取任务{
//返回不可修改的ListView(_任务);
//
//  }
Futuretasks()异步{
return wait taskDatabaseManager.getTasks();
}
任务_.dart

小部件构建(构建上下文){
退货消费者(
生成器:(上下文、任务数据、子项){
返回ListView.builder(
itemCount:taskData.taskCount,
itemBuilder:(上下文,索引){
返回任务列表互动程序(
taskTitle:taskData.tasks[index].name,
已检查:taskData.tasks[index].isDone,
checkboxCallback:(checkboxState){
taskData.updateTask(taskData.tasks[index]);
},
deleteCallback:(){
taskData.deleteTask(taskData.tasks[index]);
},
);
});
},
);
}

任何帮助都会很好。

检索数据可能有点棘手,因为它通常是异步运行的

在初始状态下检索数据

final List<Task> _tasks;

@override
void initState() {
  super.initState();
  _tasks = taskData.tasks();
}
当数据准备就绪时:

return TaskListTile(
  taskTitle: _tasks[index].name,
  isChecked: _tasks[index].isDone,
  checkboxCallback: (checkboxState) {
    taskData.updateTask(_tasks[index]);
  },
  deleteCallback: () {
    taskData.deleteTask(_tasks[index]);
  },
);

这并不是一个确切的答案,但更多的是一个建议。我个人讨厌SQL,所以我通常使用某种nosql解决方案,如Sembart或hive。hive非常容易理解,并带有一些不错的功能。您可能更喜欢使用其中一种来实现持久性。
Widget build(BuildContext context) {
    return Consumer<TaskData>(
      builder: (context, taskData, child) {

        return ListView.builder(
            itemCount: taskData.taskCount,
            itemBuilder: (context, index) {
              return TaskListTile(
                taskTitle: taskData.tasks[index].name,

                isChecked: taskData.tasks[index].isDone,
                checkboxCallback: (checkboxState) {
                  taskData.updateTask(taskData.tasks[index]);
                },
                deleteCallback: () {
                  taskData.deleteTask(taskData.tasks[index]);
                },
              );
            });
      },
    );
  }
final List<Task> _tasks;

@override
void initState() {
  super.initState();
  _tasks = taskData.tasks();
}
if (_tasks == null) {
  return CircularProgressIndicator(
    valueColor: AlwaysStoppedAnimation(const Colors.white),
  );
}
return TaskListTile(
  taskTitle: _tasks[index].name,
  isChecked: _tasks[index].isDone,
  checkboxCallback: (checkboxState) {
    taskData.updateTask(_tasks[index]);
  },
  deleteCallback: () {
    taskData.deleteTask(_tasks[index]);
  },
);