addTodo method
Side Effect Action: Uses sideEffectProvider for non-interactive feedback.
Implementation
Future<void> addTodo(String title) async {
final repository = ref.read(todoRepositoryProvider);
final newTodo = Todo(
id: DateTime.now().millisecondsSinceEpoch.toString(),
title: title,
);
final result = await repository.addTodo(newTodo);
result.fold(
(failure) => ref.read(sideEffectProvider.notifier).notify(
SideEffect.failure(
title: 'Creation Failed',
message: failure.toString(),
),
),
(_) {
ref.read(todosProvider.notifier).addTodo(newTodo);
ref.read(navigationProvider).pop<void>(); // Context-less pop
ref.read(sideEffectProvider.notifier).notify(
const SideEffect.success(
title: 'Task Created',
message: 'Your new task has been added successfully.',
),
);
},
);
}