主页加载时如何从Firestore获取数据?

弗雷迪

我正在尝试使用 Flutter 制作一个待办事项列表应用程序。主页加载时,数据没有出现在程序中

我尝试了 QuerySnapshot、'.then'、sleep 等等,但不幸的是它们都不起作用

我试图调试并找到问题所在。看起来在程序加载时,来自 Firestore 的数据还没有准备好,这就是它没有出现在主页上的原因。



import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'dart:io';

class home extends StatefulWidget {
  static const String id = 'home';
  @override
  _homeState createState() => _homeState();
}

class _homeState extends State<home> {
  String userUid;
  FirebaseUser loggedInUser;
  final _fireStore = Firestore.instance;

  final _auth = FirebaseAuth.instance;
  List<Container> messageWidgets = [];

  void getCurrentUser() async {
    final user = await _auth.currentUser();
    if (user != null) {
      loggedInUser = user;
      userUid = loggedInUser.uid;
    }
  }

  getTasks() {
    print('///////////////Get tasks///////////////');
    return _fireStore
        .document('Userss')
        .collection('$userUid/Tasks')
        .getDocuments();
  }


  bool boool = false;
  var tasks;

  @override
  void initState() {
    getCurrentUser();
    getTasks().then((QuerySnapshot docs) {
      if (docs.documents.isNotEmpty) {
        boool = true;
        tasks = docs.documents[0].data;
      }
    });
    super.initState();
  }


  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Center(
            child: Column(
      children: <Widget>[
        boool
            ? Column(
                children: <Widget>[
                  Text(tasks['Task']),
                  Text(tasks['Category']),
                ],
              )
            : Container(
                child: Text('No DATA'),
              ),
      ],
    )));
  }


我希望数据在主页加载时出现,但没有出现

弗兰克·范·普费伦

我的快速猜测是您需要使用setState(),因为数据是从 Firestore 异步加载的。

所以像:

getTasks() {
  print('///////////////Get tasks///////////////');
  _fireStore
    .document('Userss')
    .collection('$userUid/Tasks')
    .getDocuments().then((QuerySnapshot docs) {
      if (docs.documents.isNotEmpty) {
        boool = true;
        setState(() {
          tasks = docs.documents[0].data;
        });
      }
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在从 Firestore 获取数据时显示加载微调器

在Codeigniter中加载主页时如何跳过数据库文件或模型文件?

如何从 Firestore 加载数组数据?

从 Firebase Firestore 获取数据时如何使用嵌套的 map() 函数

使用批处理时如何从Firestore中获取数据?

使用vuejs加载页面时如何从firebase获取数据?

如何从Firestore中获取数据?

使用 Flutter 从 Firestore 获取数据以用于角色基础主页视图

在TableView中加载搜索到的数据时如何停止Firestore分页

如何使用密钥从 Firestore 加载数据

尝试从 Firestore 获取数据时出错

单击按钮时,Reactjs 从 Firestore 获取数据

如何在加载时加载搜索数据?

Nextjs在重新加载页面时获取数据

在等待获取数据时显示加载屏幕

仅在获取数据时加载状态

从服务获取数据时 HTTP 加载失败

按主页时重新加载相同的活动

离子加载数据然后显示主页

使用 Cloud Firestore 触发器功能时如何获取数据 ID?

在firestore上设置数据时如何获取自动生成的ID?

如何对从 Cloud Firestore 获取的数据进行排序

如何使从Firebase Firestore更快地获取数据?

从Firestore获取数据后如何设置状态

如何停止在Firestore中获取数据?

如何仅从Firestore获取新更新的数据?

如何使用Firebase Firestore获取查询数据?

如何使用firestoreConnect从firestore获取数据?

如何添加地图以获取firestore中的数据?