Вот самый простой способ управлять подключением вашего приложения с помощью Flutter и пакета Connectivity!

Если у вас есть приложение, которое взаимодействует с внешним миром, вы, вероятно, захотите убедиться, что пользователь подключен, прежде чем выполнять любой HTTP-запрос!

Для этого воспользуемся пакетом Connectivity, разработанным командой Flutter.

Пакет подключения.

Этот пакет очень полезен для управления состоянием вашего приложения в зависимости от его текущего подключения к Интернету!

Для класса Connectivity есть два важных метода и один получатель:

  • onConnectivityChanged: возвращает Stream, который позволит вам знать, когда меняется подключение вашего приложения.
  • checkConnectivity: возвращает текущее подключение вашего приложения.
  • getWifiName: возвращает SSID Wi-Fi.

Интегрируйте пакет подключения в свое приложение.

Теперь мы хотим интегрировать пакет в наше приложение!

Здесь мы постараемся отобразить представление без подключения всякий раз, когда пользователь теряет подключение!

Используя поток, предоставляемый классом Connectivity, мы можем знать, когда меняется статус подключения! Исходя из этого, мы протолкнем представление без подключения через навигатор.

Чтобы получить доступ к навигатору независимо от текущего стека навигации, мы можем использовать клавишу GlobalKey, которую мы передаем в качестве аргумента виджету MaterialApp. Таким образом мы можем получить доступ к текущему состоянию навигатора!

Теперь давайте запрограммируем это!

Сначала настройте GlobalKey навигатора:

Теперь добавьте слушателя в поток состояния подключения и не забудьте отменить подписку в методе удаления вашего состояния!

В обратном вызове мы проверим ConnectivityResult, если его нет, мы отображаем представление без подключения, а если это Wi-Fi или мобильный, мы проверяем, не было ли предыдущего результата, и если это так, мы нажимаем домашнее представление !

Вот полный код:

Если вы не хотите запускать представление без подключения, если пользователь вернет свое подключение через x секунд, просто используйте Future.delayed, чтобы подождать x секунд. Затем используйте метод checkConnectivity, чтобы проверить, вернул ли он свое соединение или нет! Чтобы избежать множественных экземпляров функции, используйте логическое значение, чтобы знать, существует ли уже экземпляр выполняющейся функции! (Если вы этого не сделаете, представление без подключения может нажать два (или более) раза, и это может раздражать пользователя).

Я не добавлял NoConnectionView и HomeView по сути, потому что это было бы не очень полезно ^^;

Вы можете добавить поддельную кнопку повторной попытки для пользователя в представлении без подключения, но с кодом в обратном вызове он автоматически подтолкнет домашнее представление, когда пользователь вернется в Интернет :)

Конец

Надеюсь, вам понравилась эта статья !!

Если да, возможно, вас заинтересуют те другие статьи, которые я написал о Flutter: