Flutter 在另一个页面上获取用户 ID 并将其转换为字符串(“类型'Future<dynamic>'不是类型'String'的子类型”)

Posted

技术标签:

【中文标题】Flutter 在另一个页面上获取用户 ID 并将其转换为字符串(“类型\'Future<dynamic>\'不是类型\'String\'的子类型”)【英文标题】:Flutter get user Id on another page and convert it in a String ("type 'Future<dynamic>' is not a subtype of type 'String'")Flutter 在另一个页面上获取用户 ID 并将其转换为字符串(“类型'Future<dynamic>'不是类型'String'的子类型”) 【发布时间】:2020-05-18 21:14:48 【问题描述】:

我需要从我的个人资料页面上的当前登录用户那里获取用户 ID。我遵循了 Youtube 上的网络忍者教程。这是我目前的方式

 final FirebaseAuth _auth = FirebaseAuth.instance;
getCurrentUser() async 
    final FirebaseUser user = await _auth.currentUser();
    final uid = user.uid;
    // Similarly we can get email as well
    //final uemail = user.email;
    print(uid);
    //print(uemail);
  

但是如果我在我的 Scaffold 中调用它,我会得到这个输出

类型“未来”不是类型“字符串”的子类型

还有 Uid。如何将其转换为字符串?还是有更优雅的方式?

谢谢!

【问题讨论】:

【参考方案1】:

您可以尝试将其放入 FutureBuilder

FutureBuilder<String>(
  future: () async 
    FirebaseAuth auth = FirebaseAuth.instance;
    FirebaseUser user = await auth.currentUser();
    String uid = user.uid.toString();
    return uid;
  (),
  builder: (context, snapshot) 
    if (snapshot.hasData) 
      return Text(snapshot.data);           // <- Customize your widget here
     else 
      return CircularProgressIndicator();
    
  ,
)

【讨论】:

以上是关于Flutter 在另一个页面上获取用户 ID 并将其转换为字符串(“类型'Future<dynamic>'不是类型'String'的子类型”)的主要内容,如果未能解决你的问题,请参考以下文章

Vue:在另一个页面上显示来自表单提交的响应

从VueJS中的api获取数据时如何添加加载器? [复制]

使用 html 链接检索 JSON 对象并在另一个 html 页面上显示 json 数据

在表中显示来自本地数据的信息

如何用linkbutton传递多个参数,同时实现页面跳转并且在另一个页面获取id?

基于LinkBut​​ton在另一个页面上创建SQL语句