Моя страница задач имеет три вкладки в BottomNavigationBar
. И на этой странице я показываю SnackBar
для сообщений об успехе или ошибках с его внутренних страниц с ObserverListener
из flutter_mobx_helpers
пакета.
body: ObserverListener(
listener: (_) {
if (controller.success != null) {
_scaffoldKey.currentState.showSnackBar(SnackBar(...));
}
if (controller.error != null) {
_scaffoldKey.currentState.showSnackBar(SnackBar(...));
}
},
child: IndexedStack(
index: _tabIndex,
children: <Widget>[
AddTaskPage(),
SearchTaskPage(),
PasswordPage(),
],
),
...
Мой контроллер устанавливает success
или error
в зависимости от статуса вызова API. Я пытался установить его на null
в блоке finally
или после попытки / улова, но из-за этого SnackBar вообще не появлялся.
try {
await _repository.storeTasks(tasks);
success = 'Saved succesffulyy!';
_clear();
} catch (e) {
error = e;
} finally {
loading = false;
// success = false;
}
Проблема в том, что при смене вкладок , SnackBar показывает снова. Я знаю, что это потому, что они на родительской странице, но я действительно не хочу дублировать код для внутренних страниц. Есть ли способ очистить SnackBar или предотвратить его появление?