Flutter Firestore订购问题

时间:2018-12-30 23:02:49

标签: firebase flutter google-cloud-firestore

我是Flutter的新手,所以请多多包涵。因此,一旦我访问主页,就需要立即从Firestore中获取User对象。问题是,当前,我正在尝试在initState()函数中提取User,并且在提取U​​ser对象之前触发了构建函数(需要用户对象),从而导致异常。

这是我的用户在initState()中获取代码

fun ShowFragmentOne() {
    val transaction = manager.beginTransaction()
    val fragment = FragmentOne()
    transaction.replace(R.id.one, fragment)
    transaction.addToBackStack(null)
    transaction.commit()
    isFragmentOneLoaded = true
}

fun ShowFragmentTwo() {
    val transaction = manager.beginTransaction()
    val fragment = FragmentTwo()
    transaction.replace(R.id.two, fragment)
    transaction.addToBackStack(null)
    transaction.commit()
    isFragmentOneLoaded = false
}

此外,我刚刚发现该代码永远不会到达setState块。不知道为什么。我知道流Firestore ref是正确的。关于如何重新组织代码的任何建议?谢谢!

1 个答案:

答案 0 :(得分:0)

在构建函数内部立即将流构建器用作小部件。

  StreamBuilder<DocumentSnapshot>(
      stream: Firestore.instance
          .collection("users")
          .document(widget.uid)
          .snapshots(),
      builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
            return Text(snapshot.data.data.userName); // example
      },
    );