首页 > 解决方案 > StreamProvider - Flutter - 如何在用户登录时更新流

问题描述

我正在构建一个具有以下结构的应用程序,以获取用户添加/执行的交易列表。

应用屏幕结构

在 main.dart 的 Material 应用程序上方,我有一个 streamProvider,它依赖于 Firebase UID(如代码片段所示)。

预期行为:每当用户登录时,他们都应该获得他们的 UID 的交易流。

实际行为:每当用户登录时,即使他们已经登录,他们仍然会看到“someID”集合中的事务。

var dbTransactionRef = db
        .collection('users')
        .doc(_auth.currentUser == null ? 'someId' : _auth.currentUser.uid)
        .collection('transactions');


StreamProvider<List<T.Transaction>>.value(
          initialData: [T.Transaction()],
          value: dbTransactionRef.snapshots().map((snapshot) => snapshot.docs
              .map((document) => T.Transaction.fromJSON(document.data()))
              .toList()),
        ),

似乎流在用户登录时没有更新。请你能帮我更新代码以获得预期的行为吗?谢谢!

标签: iosfluttermobile

解决方案


推荐阅读