Строитель повторяется много раз, когда я хочу напечатать данные из Firebase - PullRequest
0 голосов
/ 04 мая 2019

У меня проблема с флаттером и пожарной базой.

Я хочу напечатать данные из firebase в интерфейсе флаттера, который содержит форму, данные напечатаны успешно, но когда я хочу записать в текстовое поле, случай загрузки не позволяет мне, все сборщик будетповторяя много раз и быстро.

Это хорошо печатать загрузку после загрузки формы после формы .. И я не могу написать, так как решить эту проблему, пожалуйста?

 @override
  Widget build(BuildContext context) {
return new Scaffold(
    appBar: AppBar(
      title: Text("Profile"),
      elevation: 1.5,
    ),
    body: StreamBuilder<DocumentSnapshot>(
      stream: Firestore.instance
          .collection('users')
          .document(widget.user.uid)
          .snapshots(),
      builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
        if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        }
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return Text('Loading.. '); 
            break;
          default:
            return checkRole(snapshot.data);
            break;
        }
      },
    ));
  }

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Используйте FutureBuilder, потому что вы пытаетесь найти документ,

FutureBuilder(future: Firestore.instance.collection('users').document(widget.user.uid).get(),
            builder:(BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot){

      if(snapshot.hasData){
          return Text('${snapshot.data.data}');
      }

    return Text('Loading.. '); 

              });
0 голосов
/ 04 мая 2019

Я решаю эту проблему, добавляя snapshot.hasdata

builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
        if (snapshot.connectionState == ConnectionState.done ||
            snapshot.hasData) {
          return checkRole(snapshot.data);
        } else {
          return new Center(child: new Text('loading'));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...