【发布时间】:2019-09-10 21:37:48
【问题描述】:
不知道是什么异常,以前id没显示,现在显示了!
此代码在 StartPage 上,它通过检查 uid 是否为 null 来检查用户是否登录,如果他登录则转换为 HomePage,否则转换为 SignInPage。
我自己无法解决这个问题,我尝试了不止一件事来解决这个错误。 由于这个错误,我的应用程序已损坏。
Widget build(BuildContext context) {
return FutureBuilder<User>(
future: setUser(),
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data.uid != null) {
return DefaultTabController(
length: 2,
child: Scaffold(
appBar: _buildAppBar(),
body: _buildTabView(context),
),
);
}
return HomePage(
user: snapshot.data,
);
}
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
!snapshot.hasError
? SpinKitCircle(
color: Theme.of(context).primaryColor,
size: 50,
)
: Icon(
Icons.warning,
color: Theme.of(context).primaryColor,
size: 50,
),
Text(
!snapshot.hasError
? "يرجى الانتظار..."
: "مشكلة!" + "\n${snapshot.error.toString()}",
style: TextStyle(color: Colors.black54),
textDirection: TextDirection.rtl,
textAlign: TextAlign.center,
)
],
),
),
);
});
}
setUser 方法:
Future<User> getUserData() async {
User user;
final FirebaseUser authUser = await FirebaseAuth.instance.currentUser();
String uid = authUser.uid;
DocumentSnapshot ds = await Firestore.instance.collection('Users').document('$uid').get();
user = User(
name: ds['name'],
email: ds['email'],
hospital: ds['hospital'],
password: ds['password'],
phoneNumber: ds['phone'],
rank: ds['rank'],
uid: uid,
);
return user;
}
【问题讨论】:
-
您是否尝试过完全重建代码而不是
Hot Reload?也可以试试Flutter Clean看看是否有帮助。或者,已在此处发布与您面临的问题类似的建议:github.com/flutter/flutter/issues/14137 -
@Muhammad Hasan Alasady 。你能解决这个问题吗?在尝试在 iOS 上运行应用程序时,我也面临同样的问题。
标签: flutter dart firebase-authentication