я не могу использовать streamBuilder для отлова ошибки и отображения через него? Я просто попробовал выводит что нельзя showSnackbar из build использовать это слегка континтуитивно
Слушаешь показываешь Ничего не мешает подписаться на стрим и слушать его
https://stackoverflow.com/questions/55551814/unable-to-display-snackbar
Ну мне ещё читать и вникать надо ? Сложно так объяснить что ли
StreamBuilder<String>( initialData: "", stream: _appService.watchErrorInfo, builder: (context, snapshot) { //log("$snapshot", name: "login.page.error"); if (snapshot.hasData) { log(snapshot.requireData, name: "login.page.error"); if (snapshot.requireData != "") { _appService.rootScaffoldMessengerKey.currentState?.showSnackBar(SnackBar( content: Text(snapshot.requireData), duration: const Duration(seconds: 1), )); } } return const SizedBox(); }),
Если есть готовый ответ на SO, то придётся читать и вникать. Никто вам тут не обязан переводчиком работать.
Я не задаю вопрос сорян это наглость
Вот у тебя есть стрим ,почему нельзя подписаться на него ?
Ааа, это спрашивающий кидает какие-то ссылки на SO?
bloc.employeesadded.listen( (_) => scaffold.of(context).showsnackbar( snackbar( content: text('employee added'), ), ), );
Типа так? Я так понимаю чтобы контекст был вне build ?
Ошибку кинь Пишет что нельзя ?
The following assertion was thrown building StreamBuilder<String>(dirty, state: _StreamBuilderBaseState<String, AsyncSnapshot<String>>#6a1d1): The showSnackBar() method cannot be called during build. The showSnackBar() method was called during build, which is prohibited as showing snack bars requires updating state. Updating state is not possible during build.
У тебя есть контекст уже на стадии когда ты вышел из функции инит Стейт, если будешь работать с стфул виджетом
Билдер, как ясно из названия, строит дерево виджетов. В нем ничего, кромке return Widget1(child: Widget2(...)) не должно быть. А ты в нем пытаешься дергать показ снэкбара.
Ну из доки это не очевидно. Окей не везде видимо их функция стейт выполняется. Через listen пойдет
Да из доки не видно Поэтому потом понимаешь ,что есть события на которые можно реагировать
Если ты используешь bloc, то почему бы не использовать блоклистенер?
Он тоже самое делает же :)
Обсуждают сегодня