Получение данных из облачного Firestore и отображение приложения для флаттера - PullRequest
0 голосов
/ 25 января 2020

У меня есть экран профиля. и получение данных из облачного хранилища и отображение на экране профиля.

Я полагаю, нет проблем при получении данных, но проблема при отображении. Я не знаю, как я запутался? Теперь ошибка показывает только «Загрузка» текста. Помогите мне

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();
  }

Ответы [ 2 ]

1 голос
/ 25 января 2020

Я получаю и использую данные таким образом:

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

Это даст вам всех пользователей в коллекции пользователей. поэтому для извлечения одного пользователя в указанном c я использую «для l oop».

    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");
          }
        }

Но я думаю, что может быть лучший способ сделать это.

0 голосов
/ 25 января 2020

Эта ошибка вызвана тем, что вы должны инициализировать вашу пользовательскую переменную как var users = {}; вместо var user;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...