Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在Flatter应用程序中获取空值(Firestore查询结果)_Firebase_Flutter_Dart_Google Cloud Firestore_Flutter Widget - Fatal编程技术网

Firebase 在Flatter应用程序中获取空值(Firestore查询结果)

Firebase 在Flatter应用程序中获取空值(Firestore查询结果),firebase,flutter,dart,google-cloud-firestore,flutter-widget,Firebase,Flutter,Dart,Google Cloud Firestore,Flutter Widget,我有一个应用程序,在这里我通过电子邮件帐户查询获取用户详细信息。 我使用Future类获取数据并填充变量,但小部件文本始终显示空值。 如果我做错了什么,请告诉我 class _HomePageAppState extends State<HomePageApp> { String _emailUsuario; Usuario usuario; void initState() { super.initState(); Autenticacao().getCurrentUser

我有一个应用程序,在这里我通过电子邮件帐户查询获取用户详细信息。 我使用Future类获取数据并填充变量,但小部件文本始终显示空值。 如果我做错了什么,请告诉我

class _HomePageAppState extends State<HomePageApp> {
String _emailUsuario;
Usuario usuario;

void initState() {
 super.initState();

 Autenticacao().getCurrentUser().then((user) {
 setState(() {
  if (user != null) {
  _emailUsuario = user.email.toString(); //the user email is returnig correctly

  recuperarDadosUsuarioFirebase().then((ds) {
            usuario = Usuario(
              email: _emailUsuario,
              nome: ds['nome'] != null ? ds['nome'] : null,              
            );
          });
        }
      });
    });
  }

Future<DocumentSnapshot> recuperarDadosUsuarioFirebase() async {
DocumentSnapshot ds;

await Firestore.instance
  .collection('usuarios')
  .document(_emailUsuario)
   .get()
    .then((DocumentSnapshot _ds) {
   ds = _ds;
 });

return ds;
}

@override
 Widget build(BuildContext context) {
 return Scaffold(
  appBar: AppBar(),
  body: Container(
  color: Colors.white10,
  child: ListView(
  children: <Widget>[
    Text('Bem vindo ${usuario.nome} !!!'),
   ],
 ),
 ),
 );
  }
}

class\u HomePageAppState扩展状态{
字符串_emailUsuario;
乌萨里奥·乌萨里奥;
void initState(){
super.initState();
Autenticacao().getCurrentUser().then((用户){
设置状态(){
如果(用户!=null){
_EmailUsario=user.email.toString();//用户电子邮件返回正确
RecurperarDadoSusuarioFirebase()。然后((ds){
乌萨里奥(
电子邮件:_emailUsuario,
nome:ds['nome']!=null?ds['nome']:null,
);
});
}
});
});
}
Future RecurperarDadoSuuarioFirebase()异步{
文件;
等待Firestore.instance
.collection(“usuarios”)
.文件(_emailUsuario)
.get()
.然后((文档快照){
ds=_ds;
});
返回ds;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
主体:容器(
颜色:颜色。白色,
子:ListView(
儿童:[
Text('Bem vindo${usuario.nome}!!!'),
],
),
),
);
}
}

U可能希望将Future Builder用于此类异步工作,因为在分配
usuario
之前调用了生成方法,如下所示:

FutureBuilder(
  future: getCurrentUser(),
  builder: (context, AsyncSnapshot snapshot) {
    if (snapshot.data == null) {
      return Center(child: CircularProgressIndicator());
    }
    // after getting data
  },
);
方法
getCurrentUser()
需要创建:)