From 11a646954486d1ada86184ff915fbccb37802363 Mon Sep 17 00:00:00 2001 From: SomnusVeritas Date: Wed, 8 Nov 2023 11:39:12 +0100 Subject: [PATCH] todolist watches for changes on db --- lib/services/dbhelper.dart | 3 +++ lib/widgets/todo_list.dart | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/services/dbhelper.dart b/lib/services/dbhelper.dart index 4aeb1c4..a3eaf75 100644 --- a/lib/services/dbhelper.dart +++ b/lib/services/dbhelper.dart @@ -18,4 +18,7 @@ class DbHelper { static List fetchTodos() => _isar.todos.where().findAll(); static void addTodo(Todo todo) => _isar.write((isar) => isar.todos.put(todo)); + + static Stream watchTodos() => + _isar.todos.watchLazy(fireImmediately: true); } diff --git a/lib/widgets/todo_list.dart b/lib/widgets/todo_list.dart index a868242..216676d 100644 --- a/lib/widgets/todo_list.dart +++ b/lib/widgets/todo_list.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import '../models/todo.dart'; import '../services/dbhelper.dart'; class TodoList extends StatefulWidget { @@ -10,7 +11,17 @@ class TodoList extends StatefulWidget { } class _TodoListState extends State { - final _todos = DbHelper.fetchTodos(); + List _todos = DbHelper.fetchTodos(); + + @override + void initState() { + super.initState(); + DbHelper.watchTodos().listen((event) { + setState(() { + _todos = DbHelper.fetchTodos(); + }); + }); + } @override Widget build(BuildContext context) {