Я новичок во флаттере, и у меня действительно нет идеи использовать базу данных sqlite с provider
. хотя я создал приложение todo с 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]);
},
);
});
},
);
}
любая помощь будет отличной.