Я пытаюсь убедиться, что пользователи приложений, которые не авторизованы (вошли в систему), перенаправляются на страницу входа. Вот как выглядит мой main.dart
:
class App extends StatelessWidget {
Widget build(BuildContext context) {
return StreamBuilder<FirebaseUser>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.active) {
// some loading widget
return MaterialApp(home: Scaffold(),);
}
FirebaseUser user = snapshot.data;
if (user == null) {
return MaterialApp(home: SignIn(),);
}
// this is the main app
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => HomeScreen(),
'/new_game': (context) => NewGame(),
'/join_session': (context) => JoinSession(),
'/my_rankings': (context) => MyRankings(),
'/settings': (context) => Settings(),
},
);
}
);
}
}
Когда я запускаю приложение (на chrome с помощью веб-функции), я начинаю со страницы входа (как и ожидалось), которая просто содержит кнопка анонимного входа. Когда я вхожу в систему, появляется сообщение об ошибке, в котором указано, что построитель начального маршрута (маршрут '/'
с HomeScreen()
в качестве построителя) возвращает null
. Когда я меняю свое основное приложение на простое
return MaterialApp(home: Scaffold(body: Text('This Works')));
, оно действительно работает. При использовании простого MaterialApp()
, который делает то же самое, но с использованием routes
, он снова выдает ошибку, поэтому проблема, похоже, связана с маршрутизацией. В чем дело?