Я занимаюсь разработкой простого приложения, используя Flutter.
У него есть список задач, и если пользователь щелкает один из них, он отображает детали интерфейса.
В пользовательском интерфейсе есть кнопка удаления.
Поэтому, когда пользователь нажимает кнопку, задача должна быть удалена, а пользовательский интерфейс должен быть возвращен к предыдущему пользовательскому интерфейсу (Todo list UI).
Я использую шаблон BloC.
class DetailsTodo extends StatelessWidget {
final TodoRepository _todoRepository;
final String _todoId;
final DetailsTodoBloc bloc;
DetailsTodo(this._todoRepository, this._todoId)
: this.bloc = DetailsTodoBloc(_todoRepository, _todoId);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: StreamBuilder<Todo>(
stream: bloc.todo,
builder: (context, snapshot) {
final todo = snapshot.data;
print("[DetailsTodo][JOS] todo: $todo");
return Text(todo.name);
}),
),
);
}
А вот и BloC:
class DetailsTodoBloc {
final TodoRepository _todoRepository;
final String _todoId;
final _getTodoSubject = PublishSubject<Todo>();
final _deleteTodSubject = PublishSubject<String>();
Stream<Todo> get todo => _getTodoSubject.stream;
Sink<String> get delete => _deleteTodSubject.sink;
DetailsTodoBloc(this._todoRepository, this._achievementRepository, this._todoId) {
_getTodo();
_deleteTodSubject.listen(_deleteTodo);
}
Future<Null> _getTodo() async {
final todo = await _todoRepository.get(_todoId);
_getTodoSubject.add(todo);
}
void _deleteTodo(String todoId) async {
final result = await _todoRepository.delete(todoId);
_getTodoSubject.add(null); // I want to notify to the UI to call "Navigator.pop". But I don't know how to do it.
}
}
Я не знаю, как я могу вызвать «Navigator.pop» после завершения удаления задачи.