如何在Flutter中的StreamProvider中捕获错误

时间:2019-08-11 21:44:46

标签: flutter dart

我尝试在Firestore中获取不存在的数据时,StreamProvider出现问题。

Stream<CollectedItem> streamCollectedItem(String id,int category)
{
      return _db
          .collection('users')
          .document(id)
          .collection('CollectedItems').where('category', isEqualTo: category)
          .limit(1)
          .snapshots()
          .map((snap) => CollectedItem.fromFirestore(snap.documents.first));

    }

我这样调用此函数:

return StreamProvider<CollectedItem>.value(
     value: db.streamCollectedItem(userID,collectMeNotification.category),
          child: AlertDialog(
            title: Text('Quantité'),
            content: SingleChildScrollView(
              child: popUp(collectMeNotification,userID)

              ),

但是我遇到“未提供catchError”问题,因为我将流与不存在的数据链接起来。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

如果流发出错误,则可以使用catchError提供后备值。

例如,要发出null,将是:

StreamProvider(
  builder: (_) => someStream,
  catchError: (_, __) => null,
  child: ...,
)