Flutter 在 Firestore 文档更改时调用 http api

Flutter make http api call when Firestore document changed

我正在尝试在更改 firestore 文档时调用数据 api,但出现错误:错误类型 'null' 不是 [=21 的子类型=] 与 riverpod。我究竟做错了什么?谢谢

final firebaseAuthProvider = Provider<FirebaseAuth>((ref) => FirebaseAuth.instance);
final authStateChangesProvider = StreamProvider<User?>((ref) => ref.watch(firebaseAuthProvider).authStateChanges());

final databaseProvider = Provider<DatabaseService?>((ref) {
  final auth = ref.watch(authStateChangesProvider);

  if (auth.asData?.value?.uid != null) {
    return DatabaseService(uid: auth.asData!.value!.uid);
  }
  return null;
});
final firestoreDatabaseProvider = Provider<FirestoreDatabase?>((ref) {
  final auth = ref.watch(authStateChangesProvider);

  if (auth.asData?.value?.uid != null) {
    return FirestoreDatabase(uid: auth.asData!.value!.uid);
  }
  return null;
});
final apiDataProvider2 = FutureProvider.autoDispose<ProfileUser?>((ref) {
  final authUser = ref.watch(authStateChangesProvider);
  final user = authUser.value;
  if (user != null) {
    final userValue = ref.watch(firestoreDatabaseProvider);
    final dbProvider = ref.watch(databaseProvider);
    var profileUser;
    userValue?.getFirestoreUser().listen((event) {
      profileUser = dbProvider!.getProfile();
    });

    if (profileUser) {
      return profileUser;
    } else {
      return Future.value(null);
    }
  } 
});

问题出在profileUser;它在

之前被归还
   var profileUser;
    userValue?.getFirestoreUser().listen((event) {
      profileUser = dbProvider!.getProfile();
    });

    if (profileUser) {
      return profileUser;
    } else {
      return Future.value(null);
    }

试试这个:

   var profileUser = (await userValue?.getFirestoreUser().first)!.getProfile();
    if (profileUser) {
      return profileUser;
    } else {
      return Future.value(null);
    }