当用户进行身份验证时,应用程序不会导航到其他页面



问题是,当用户登录或注销时,我的应用程序不会自动导航到另一个页面。

class MyApp extends StatelessWidget {
final Future<FirebaseApp> _initialization = Firebase.initializeApp();
@override
Widget build(BuildContext context) {
return FutureBuilder(
// Initialize FlutterFire:
future: _initialization,
builder: (context, snapshot) {

if (snapshot.connectionState == ConnectionState.done) {
return StreamProvider<User>.value(
value: AuthService().user,
child: MaterialApp(home: Wrapper()),
);
}
return Center(child: CircularProgressIndicator());
},
);
}
}
class Wrapper extends StatelessWidget {
const Wrapper({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
if (user != null) {

return MaterialApp(initialRoute: '/', routes: {
'/': (context) => Home(),
'/profile': (context) => Profile()
});
}
return MaterialApp(initialRoute: '/', routes: {
'/': (context) => Welcome(),
'/signup': (context) => SignUp(),
'/signin': (context) => SignIn()
});
}
}

当应用程序启动时,它确实会显示Welcome((页面。然后,我可以通过按下注册按钮(如(导航到注册页面

onPressed: () {Navigator.pushNamed(context, "/signup");}),

但当用户注册时,应用程序不会自动导航到Home((

class AuthService {
FirebaseAuth auth = FirebaseAuth.instance;
User _userFromFirebaseUser(User user) {
return user != null ? User(id: user.uid) : null;
}
Stream<User> get user {
return auth.authStateChanges().map(_userFromFirebaseUser);
}
Future<String> signUp(email, password) async {
try {
UserCredential user = await auth.createUserWithEmailAndPassword(
email: email, password: password);
await FirebaseFirestore.instance
.collection('users')
.doc(user.user.uid)
.set({'name': email, 'email': email});
_userFromFirebaseUser(user.user);
} on FirebaseAuthException catch (e) {
return e.code;
} catch (e) {
return e;
}
return "";
}
}

我不知道问题出在哪里。如有任何帮助,我们将不胜感激。

首先,您需要1个MaterialApp而不是3,然后尝试调试signUp方法。例如,signUp返回Future<String>,但在catch块中,您返回的是Exception,最后我建议您在需要侦听状态更改以进行导航时使用Cubit。