【问题标题】:Getting Data from cloud Firestore and showing for flutter app从 Cloud Firestore 获取数据并显示 Flutter 应用程序
【发布时间】:2020-05-11 10:52:21
【问题描述】:

我有一个个人资料屏幕。并从云存储中获取数据并显示在个人资料屏幕中。

我想在检索数据时没有问题,但问题是在显示时。我不知道我怎么搞砸了? 现在错误只显示“加载”文本。 帮帮我

class Profile extends StatefulWidget {
 @override
 _ProfileState createState() => _ProfileState();
}

class _ProfileState extends State<Profile> {
 bool userFlag = false;
 var users;

 @override
 void initState() {
   // TODO: implement initState
   super.initState();
   UserManagement().getData().then((QuerySnapshot docs){
      userFlag = true;
      users = docs.documents[0].data;
   });
 }
 @override
 Widget build(BuildContext context) {
   return Scaffold(
     appBar: AppBar(
       title: Text('Profile'),
     ),
     body: Container(
       padding: EdgeInsets.all(50),
       child: Column(
         children:<Widget>[
         name(),
         ],
       ),
     ),
   );
 }

Widget name() {
   return Container(
     child: Row(
       mainAxisAlignment: MainAxisAlignment.start,
       children: <Widget>[
         Text(
           "Name",
           style: TextStyle(fontWeight: FontWeight.w600,fontSize: 18),
         ),
         SizedBox(
           width: 45,
         ),
           userFlag ? Text(users['Name'],
           style: TextStyle(fontWeight: FontWeight.w400,fontSize: 18),
         )
       :Text('Loading'),
       ],
     ),
   );
 }

获取我拥有的数据:

getData(){
    return Firestore.instance
        .collection('users').getDocuments();
  }

【问题讨论】:

    标签: database firebase flutter google-cloud-firestore flutter-layout


    【解决方案1】:

    我以这种方式获取和使用数据:

    QuerySnapshot Users = await _fs
            .collection("users")
            .getDocuments();
    

    它将为您提供用户集合中的所有用户。 因此,为了具体检索一个用户,我使用“for 循环”。

        String myEmail = "email@gmail.com";
        String username;
    
        for (var user in users.documents) {
              if ( myEmail == user.data["email"]){
                // you have all the field for the user using "myEmail".
                username = user.data["username"];
              } else {
                print("There is no User with this email");
              }
            }
    

    但我认为可能有更好的方法。

    【讨论】:

      【解决方案2】:

      这个错误是因为,你应该初始化你的用户变量,比如 var users = {}; 而不是 var user;

      【讨论】:

        猜你喜欢
        • 2021-02-24
        • 1970-01-01
        • 2022-06-24
        • 2021-04-03
        • 1970-01-01
        • 2021-05-28
        • 1970-01-01
        • 2019-02-26
        相关资源
        最近更新 更多