Использование навигатора для перемещения за пределы виджета - PullRequest
0 голосов
/ 08 марта 2019

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

wifiChangesStream.stream.listen((WifiChange change) {
  if(change.connected) {
    defaultActionOnWifiBack(context);
  } else {
    defaultActionOnWifiLoss(context);
  }
});

Действия по умолчанию содержат вызовы навигатора:

  Navigator.of(context).pushReplacementNamed('/home');

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

class MyApp extends StatelessWidget {
// This widget is the root of your application.

@override
Widget build(BuildContext context) {
  NetworkWifiManager.listenToWifi(context);
  return MaterialApp(
      //...
  )
}

Но я получаю это явное исключение:

Unhandled Exception: Navigator operation requested with a context that does not include a Navigator.

Я пытался подписаться на события маршрута, откуда мы можем получить доступ к route.settings.context, но проблема та же.

...