@Scorpiored88

Как в flutter реализовать глобальный snakbar?

Всем доброго времени!
Есть у меня небольшое приложения на flutter, решил добавить туда оповещения в случае отсутствия интернета, прикрутил библиотеку connectivity_plus.
И вот теперь не понимаю как сделать так, что бы сообщения об отсутствия интернета показивалось на всех страницах.
Хендлер на смену состояния у меня в main.dart
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Neonoviiwolf
Flutter developer
делайте GlobalKey, привязываете к MaterialApp, к примеру либой get_it чтобы сделать Singleton, теперь в любом месте можно вызвать showSnackBar();
final _scaffoldMessengerKey = getIt<GlobalKey<ScaffoldMessengerState>>();

void showSnackBar({required String text}) {
  _scaffoldMessengerKey.currentState
    ?..clearSnackBars()
    ..showSnackBar(
      SnackBar(
        content: Text(text),
        action: SnackBarAction(
          label: 'Закрыть',
          textColor: Colors.yellow,
          onPressed: () {},
        ),
      ),
    );
}


class _AppState extends State<App> {
  final rootScaffoldMessengerKey = getIt<GlobalKey<ScaffoldMessengerState>>();

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      scaffoldMessengerKey: rootScaffoldMessengerKey,
      builder: (context, child) {
       return child;
      },
    );
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы