Error on generated file for AsyncNotifierProvider `.family` Riverpod providers

571 Views Asked by At

I wonder if I am overlooking something. When ever I try to generate the following via riverpod_annotation I'm getting the error below where it cannot find Family class. I'm pretty sure I'm doing something wrong, but I'm not sure what.

I've deleted and rebuilt the file multiple times and I'm not sure what I can change to make it work.

Here's the gist with both the controller and the generated controller logic

https://gist.github.com/Morzaram/7d75bcfed06ea7cce88a8b11c4fad223

import 'package:front_end/utils/pocketbase_provider.dart';
import 'package:pocketbase/pocketbase.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'mangage_topic_voices_controller.g.dart';

@riverpod
class ManageTopicVoicesController extends _$ManageTopicVoicesController {
  List<String> _selectedVoices = [];
  bool mounted = true;

  get selectedVoices => _selectedVoices;
  @override
  FutureOr<void> build({required List<String> ids}) {
    ref.onDispose(() {
      mounted = false;
    });
    if (mounted) {
      _selectedVoices = ids;
    }
  }

  void addVoice(String id) {
    _selectedVoices = [..._selectedVoices, id];
  }

  void removeVoice(String id) {
    _selectedVoices = _selectedVoices.where((e) => e != id).toList();
  }

  Future<RecordModel> updateTopic({topicId, selectedVoices}) async {
    final res = await pb
        .collection('topics')
        .update(topicId, body: {"voices": selectedVoices});

    return res;
  }
}

The error I'm getting is Classes can only extend other classes. Try specifying a different superclass, or removing the extends clause. and it's occuring on the first line of Family<AsyncValue<void>>

class ManageTopicVoicesControllerFamily extends Family<AsyncValue<void>> { 
  ManageTopicVoicesControllerFamily();

  ManageTopicVoicesControllerProvider call({
    required List<String> ids,
  }) {
    return ManageTopicVoicesControllerProvider(
      ids: ids,
    );
  }

  @override
  AutoDisposeAsyncNotifierProviderImpl<ManageTopicVoicesController, void>
      getProviderOverride(
    covariant ManageTopicVoicesControllerProvider provider,
  ) {
    return call(
      ids: provider.ids,
    );
  }

  @override
  List<ProviderOrFamily>? get allTransitiveDependencies => null;

  @override
  List<ProviderOrFamily>? get dependencies => null;

  @override
  String? get name => r'manageTopicVoicesControllerProvider';
}

I know that the error is saying that the Family class doesn't exist, but I'm not sure if the error is due to me or not.

Can I not use family with this currently? I would love any help that I can get.

I'm new to dart, so apologies, and thank you in advance!


Here's the gist with both files

0

There are 0 best solutions below