Jac*_*rva 5 flutter google-cloud-firestore
我是 flutter 和 firestore 的新手。我\xc2\xb4m 构建一个社交媒体应用程序,需要从当前登录的用户获取一些用户信息到用户个人资料页面。例如用户名、电子邮件等。 \n我已设法将用户数据上传到 firestore,但我正在努力将当前的用户信息返回到我的项目中。
\n\n我已经尝试过这种方法,它确实从 firestore 获取了用户信息,但不幸的是不是当前的用户信息。\n我想问题是我卡在了 firestore 数据库中的第一个文档上?
\n\nStreamBuilder(\n stream:\n Firestore.instance.collection('userData').snapshots(),\n builder: (context, snapshot) {\n if (!snapshot.hasData) {\n return CircularProgressIndicator();\n }\n\n return Container(\n child: Padding(\n padding: const EdgeInsets.only(top: 75.0),\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Text(\n snapshot.data.documents[0]['userName'],\n style: TextStyle(fontSize: 25.0),\n ),\n Padding(\n padding: const EdgeInsets.only(top: 5.0),\n child:\n Text(snapshot.data.documents[0]['email']),\n ),\n ],\n ),\n ),\n );\n}),\nRun Code Online (Sandbox Code Playgroud)\n\n我真的很感激任何潜在的解决方案。
\n\n谢谢你!
\n小智 5
Future<void> _getUserName() async {
Firestore.instance
.collection('Users')
.document((await FirebaseAuth.instance.currentUser()).uid)
.get()
.then((value) {
setState(() {
_userName = value.data['UserName'].toString();
});
});
}
Run Code Online (Sandbox Code Playgroud)
像这样将 _userName 添加到 initstate
void initState() {
super.initState();
_getUserName();
}
Run Code Online (Sandbox Code Playgroud)
并这样称呼它
child: Text('Hello $_userName,'),
Run Code Online (Sandbox Code Playgroud)
我希望这会起作用
如果您使用 Firebase 身份验证,那么
import 'package:firebase_auth/firebase_auth.dart';
FirebaseUser user = await FirebaseAuth.instance.currentUser();
Run Code Online (Sandbox Code Playgroud)
将为您获取当前登录的用户。之后,你可以做
var email = user.email;
var userName = user.displayName;
Run Code Online (Sandbox Code Playgroud)
获取相关的用户信息。
| 归档时间: |
|
| 查看次数: |
13833 次 |
| 最近记录: |