generated なコードに対し Riverpod generator で生成すると dynamic 型になってしまう
cloud_firestore_odm で生成された型を riverpod generator で利用したかったがダメっぽい。これは firestore がどうこうではなく、generated されたコードに対し generator を使うことができないっぽい。
まず以下のコードで FeedQuerySnapshot が生成される。
@Collection<User>('users') @Collection<Feed>('users/*/feeds') final usersRef = UserCollectionReference();
riverpod generator で以下のように書く。
@riverpod Stream<FeedQuerySnapshot> feeds(FeedsRef ref) { final uid = ref.watch(authStateProvider).value?.uid; return usersRef.doc(uid).feeds.snapshots(); }
そうするとこのように dynamic な型として生成されてしまう。
@ProviderFor(feeds) final feedsProvider = AutoDisposeStreamProvider<dynamic>.internal( feeds, name: r'feedsProvider', debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') ? null : _$feedsHash, dependencies: null, allTransitiveDependencies: null, );
これにより実行時エラーとなってしまう。
これはどうしようもなさそうで、手で Provider を書く必要がありそう。
Using generated code as input of other generators doesn't work.