このチャプターの目次
timeline_provider.dartを記述しよう。
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:(アプリ名)/model/db/todo_db.dart';
class TimelineDataNotifier extends StateNotifier<List<TodoItemData>> {
TimelineDataNotifier() : super([]);
Future<List<TodoItemData>> read() async {
final db = MyDatabase();
List<TodoItemData> datas = await db.readAllTodoData();
return datas;
}
void makeLimitList(DateTime now) async {
List<TodoItemData> list = [];
List<TodoItemData> datas = await read();
for (TodoItemData data in datas) {
if (data.limitDate == null) {
continue;
}
if (data.limitDate!.difference(now).inDays == 0) {
list.add(data);
}
list.sort((a, b) => a.limitDate!.compareTo(b.limitDate!));
state = list;
}
}
}
final timelineDataProvider =
StateNotifierProvider((ref) => TimelineDataNotifier());
timeline画面では値の操作がないのでList<TodoItemData>で状態を保持しようと思います。
このProviderでは、DBからすべてのデータを読み込み、締め切りが今日のTodoItemDataを締切の昇順で保持します。
まとめ
今回はこれで終わりです。
次の章では今まで作ったproviderをviewに反映させます。