【问题标题】:getting an error before loading data from Firestore in flutter在颤动中从 Firestore 加载数据之前出现错误
【发布时间】:2020-08-04 20:02:33
【问题描述】:

在这里,当我尝试在我的颤振应用程序中加载数据时,在加载数据之前它会抛出一个错误 1 ​​秒钟,然后它会显示数据,这是错误:

这是我的代码:

  class MapScreenState extends State<DashboardPage> {

  Stream<DocumentSnapshot> getData() async*{
    var user = await FirebaseAuth.instance.currentUser();
    yield* Firestore.instance.collection('Profile').document(user.uid).snapshots();
  }
  @override
  void initState() {
    super.initState();

    getData();//until this is completed user stays null we can use it to check whether it's loaded
  }

  @override
  Widget build(BuildContext context) {

    return StreamBuilder(
      stream: getData(),
      builder: (context, snapshot) {

        if (snapshot.hasError) {
          return new showProfile(
            name: "anonymous",
            email: "null",
            pin: "null",
            address: "null",
          );
        }else {
          var userDocument = snapshot.data;
          return new showProfile(
            name: userDocument['name'],
            email: userDocument["email"],
            pin: userDocument["pin"],
            address: userDocument["address"],
          );
        }

      },
    );
  }
}

如何在不显示错误的情况下检索数据?

【问题讨论】:

  • 不是修复方法,但最好将流初始化为变量并在build 中使用它,而不是在build 中调用getData()。

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


【解决方案1】:

在您的代码中某处有一个Text 小部件,在加载字符串之前,该小部件从firestore 获得了一个字符串。尝试这样做:

...

Text(stringFromFirestore ?? ''),

...

在 dart 中,?? 运算符检查第一个值(stringFromFirestore)是否为 null,如果不是,则返回第一个值,如果是,则返回第二个值。

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2021-07-29
    • 2020-12-29
    • 2020-08-09
    • 2021-09-24
    • 2022-01-02
    • 2019-09-29
    • 2021-06-25
    • 2019-01-31
    相关资源
    最近更新 更多