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.

github.com