【问题标题】:Use Stream to populate TextEditingController in flutter app在 Flutter 应用中使用 Stream 填充 TextEditingController
【发布时间】:2021-10-03 15:03:36
【问题描述】:

我似乎无法在不丢失快照的情况下将 QuerySnapshot 从一个类传递到另一个类,因此我试图找到解决方法 (see my post here)。我正在尝试使用 StreamBuilder 再次提取数据。

StreamBuilder (
        stream: _db.collection('agency').doc(globals.agencyId).
        collection('trxns').doc(globals.currentTrxnId).snapshots(),
        builder: (context, trxnSnapshot) {  <<<< ERROR 1
        if (trxnSnapshot.hasData) {
          var outPut = trxnSnapshot.data();  <<<< ERROR 2
          clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? ""; <<<< ERROR 3
        }
)

我遇到了一些错误。

  1. 主体可能正常完成,导致返回“null”,但返回类型可能是不可为空的类型。 我试过添加“?”和 ”!”但它不起作用。

  2. 在帖子中找到这行代码,但我不知道如何从快照中获取数据。

  3. 这个错误会在#2修复后修复。

这些应该很容易解决,但我不知道该怎么做。

编辑我尝试添加类型转换,如下所示,但出现新错误。

StreamBuilder<QuerySnapshot> (
        stream: _db.collection('agency').doc(globals.agencyId).
        collection('trxns').doc(globals.currentTrxnId).snapshots(),
        builder: (context, trxnSnapshot) {
          if (trxnSnapshot.hasData) {
            var outPut = (trxnSnapshot.data() as QueryDocumentSnapshot);
                        clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? "";
          }
)

【问题讨论】:

    标签: flutter stream flutter-streambuilder


    【解决方案1】:

    您应该首先检查您收到的快照是否有任何数据。如果没有,则无法拨打trxnSnapshot.data()

    试试这个:

    StreamBuilder (
            stream: _db.collection('agency').doc(globals.agencyId).
            collection('trxns').doc(globals.currentTrxnId).snapshots(),
            builder: (context, trxnSnapshot) {
              if(trxnSnapshot.hasData){  
                var outPut = trxnSnapshot.data();  
                clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? "";
           } else {
                print("Do something, maybe show a loading widget");
        }
              
    )
    

    【讨论】:

    • 感谢@AlanCesar 的回复,但我仍然有错误。它们与零安全性有关。你对如何解决这个问题有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2021-10-26
    • 1970-01-01
    • 2020-10-31
    • 2020-12-23
    相关资源
    最近更新 更多