我想以用户(简单用户)和公司身份登录..这里显示登录成功但页面无法路由
void route(BuildContext context) {
User? user = FirebaseAuth.instance.currentUser;
DatabaseReference userRef = FirebaseDatabase.instance.reference().child('user').child(user!.uid);
userRef.once().then((DatabaseEvent event) {
if (event.snapshot.value != null) {
Map<String, dynamic>? userData = event.snapshot.value as Map<String, dynamic>?;
String? userRole = userData?['userType'];
if (userRole == "Company") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const AdminBar(),
),
);
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const bottomBar(),
),
);
}
}
});
}
我应该修改什么?
我重写代码并管理错误情况。它可以帮助您了解错误原因。
还有一个建议,
userType
可能是一家公司的简单用户。"COMPANY"或 "company" 等大小写样式来管理
userType
值。
这是更新后的代码:
void route(BuildContext context) {
User? user = FirebaseAuth.instance.currentUser;
// Check if a user is logged in
if (user != null) {
DatabaseReference userRef =
FirebaseDatabase.instance.reference().child('user').child(user.uid);
userRef.once().then((DatabaseEvent event) {
if (event.snapshot.value != null) {
Map<String, dynamic>? userData =
event.snapshot.value as Map<String, dynamic>?;
String? userRole = userData?['userType'];
// Use a try-catch block to handle errors during navigation
try {
if (userRole == "Company") {
// Use `pushReplacement` to replace the current screen
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => const AdminBar(),
),
);
} else {
// Use `pushReplacement` to replace the current screen
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => const BottomBar(),
),
);
}
} catch (e) {
print("Error navigating: $e");
}
} else {
print("User data not found");
}
});
} else {
print("User not logged in");
}
}