rrousselGit / riverpod

A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
https://riverpod.dev
MIT License
5.82k stars 888 forks source link

Incorrect avoid_manual_providers_as_generated_provider_dependency trigger when using family provider #3453

Closed PeterStaev closed 1 month ago

PeterStaev commented 1 month ago

Describe the bug I think I'm getting an incorrect lint error for avoid_manual_providers_as_generated_provider_dependency in the below code. All providers use the generator and none are scoped.

To Reproduce

import 'package:riverpod_annotation/riverpod_annotation.dart';

part 'test_provider.g.dart';

class Loader {
  String key;

  Loader({required this.key});

  Future<String> load() {
    return Future.value(key);
  }
}

@riverpod
Future<Loader> loader(LoaderRef ref, String key) async {
  return Loader(key: key);
}

@riverpod
Future<String> value1(Value1Ref ref) async {
  final loader = await ref.watch(LoaderProvider('value1').future);
  return loader.load();
}

Error reported by lint

lib/src/core/providers/test_provider.dart:22:34 • Generated providers should only depend on other generated providers. Failing to do so may break rules such as "provider_dependencies". • avoid_manual_providers_as_generated_provider_dependency • INFO

Expected behavior Lint to not be triggered.

rrousselGit commented 1 month ago

final loader = await ref.watch(LoaderProvider('value1').future);

That's not the correct syntax.

Do:

  final loader = await ref.watch(loaderProvider('value1').future);
PeterStaev commented 1 month ago

Thanks, works like a charm! Somehow got fooled by vscode autocomplete 😅