Search code examples
flutterriverpod

The argument type 'T Function<T>(ProviderListenable<T>)' can't be assigned to the parameter type 'Reader<dynamic, dynamic>


im trying to declare a provider for addmealChangenotifier but i notice on ref.read i keep on getting the erro cant be assigned to the parameter type Reader how can i go about fixing this error

final addMealProvider =
    ChangeNotifierProvider((ref) => AddMealChangeNotifier(ref.read ));

class AddMealChangeNotifier extends ChangeNotifier {
  final Reader _reader;
  AddMealChangeNotifier(this._reader);

Solution

  • you can try it this way:

    final addMealProvider =
        ChangeNotifierProvider((ref) => AddMealChangeNotifier(ref));
    
    // or use tear-off
    final addMealProvider = ChangeNotifierProvider(AddMealChangeNotifier.new);
    
    class AddMealChangeNotifier extends ChangeNotifier {
      final Ref _ref;
      AddMealChangeNotifier(this._ref);
    

    Also, you can define a custom Reader (not recommended):

    typedef Reader = T Function<T>(ProviderBase<T> provider);
    

    Mark it as correct if the answer helped you.