Я использую flutter_bloc для управления состоянием и приземлился по этой проблеме.При обновлении поля и его сохранении BlocBuilder не обновляет страницу.Работает нормально при добавлении или удалении.Я не уверен, что я делаю не так здесь.
Даже если я перехожу на другой экран и возвращаюсь к этому экрану, он все равно отображает старые данные, даже если файл был обновлен.
Я потратил более 2 часов, пытаясь отладить это допомогло.Я попытался инициализировать updatedTodos = []
, а затем добавить каждую задачу по очереди, чтобы посмотреть, что-нибудь из этого получится, но это тоже не сработало.
Любая помощь здесь будет оценена.
TodosBloc.dart:
Stream<TodosState> _mapUpdateTodoToState(
TodosLoaded currentState,
UpdateTodo event,
) async* {
if (currentState is TodosLoaded) {
final index = currentState.Todos
.indexWhere((todo) => event.todo.id == todo.id);
final List<TodoModel> updatedTodos =
List.from(currentState.todos)
..removeAt(index)
..insert(index, event.todo);
yield TodosLoaded(updatedTodos);
_saveTodos(updatedTodos);
}
}
todos_screen.dart:
...
Widget build(BuildContext context) {
return BlocBuilder(
bloc: _todosBloc,
builder: (BuildContext context, TodosState state) {
List<TodoModel> todos = const [];
String _strings = "";
if (state is TodosLoaded) {
todos = state.todos;
}
return Expanded(
child: ListView.builder(
itemCount: todos.length,
itemBuilder: (BuildContext ctnx, int index) {
return Dismissible(
key: Key(todo.toString()),
child: DetailCard(
todo: todos[index],
),
);
},
),
);
...
Я ожидаю, когдавызываемый BlocBuilder и обновляющий ListView.