我是 flutter 的新手,我真的不知道将 sqlite 数据库与provider
一起使用。 虽然我已经创建了一个带有provider
的待办事项应用程序,并且我已成功向其添加了sqlite database
。但是在获取数据时,我的listViewBuilder
小部件中出现错误。
错误:未为类"Future> Function(("定义方法"[]"。
这是我的代码。
database_connection.飞镖
Future<List<Task>>getTasks() async {
await openDb();
final List<Map<String, dynamic>>maps = await _database.query('tasks');
print(maps);
return List.generate(maps.length, (i){
return Task(
id: maps[i]['id'],
name: maps[i]['title'],
date:maps[i]['date'],
isDone: maps[i]['iscomplete'] == 1 ? true: false,
);
});
}
taskData.dart
class TaskData extends ChangeNotifier {
final TaskDatabaseManager taskDatabaseManager = new TaskDatabaseManager();
List<Task> _tasks = [
Task(name: 'Buy coffee'),
Task(name: 'Go Shopping'),
Task(name: 'Go Sleep'),
];
// UnmodifiableListView<Task> get tasks {
// return UnmodifiableListView(_tasks);
//
// }
Future<List>tasks()async {
return await taskDatabaseManager.getTasks();
}
task_tile.飞镖
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]);
},
);