【发布时间】:2020-02-15 00:55:35
【问题描述】:
我是 Flutter 的新手,我真的不知道将 sqlite 数据库与 provider 一起使用。虽然我已经用provider 创建了一个待办事项应用程序,并且我已经成功地向它添加了一个sqlite database。但是在获取数据时,我的listViewBuilder 小部件出现错误。
错误:没有为类“Future> Function()”定义方法“[]”。
这是我的代码。
database_connection.dart
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.dart
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]);
},
);
});
},
);
}
任何帮助都会很棒。
【问题讨论】:
-
这并不完全是一个答案,而是一个建议。我个人讨厌 SQL,所以我通常使用某种 nosql 解决方案,如 sembast 或 hive。 Hive 很容易理解,并带有一些不错的功能。您可能更喜欢使用其中一种来代替您的持久性。
标签: sqlite flutter dart provider