From 003f2f744fdab385341a99ed2cf5c5a06037c723 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Tue, 19 Nov 2024 00:26:00 +0100 Subject: [PATCH 1/4] Sync dev with master --- analysis_options.yaml | 3 + examples/marvel/analysis_options.yaml | 3 + .../flutter_riverpod/lib/src/builders.dart | 2 - packages/hooks_riverpod/pubspec.yaml | 2 +- packages/riverpod/lib/src/core/ref.dart | 2 +- .../test/ref_invocation_test.dart | 142 +++++++++++++- .../test/widget_ref_invocation_test.dart | 83 ++++++++ packages/riverpod_generator/CHANGELOG.md | 4 + .../generated/golden/lib/sync.dart | 1 + packages/riverpod_lint/CHANGELOG.md | 4 + .../lib/src/lints/functional_ref.dart | 37 ---- .../lib/src/lints/provider_dependencies.dart | 2 +- ...rt_functional_provider_to_class_based.dart | 1 + ...rt_functional_provider_to_class_based.diff | 4 +- .../test/golden.dart | 182 ++++++++++++++++++ .../avoid_build_context_in_providers.dart | 1 + .../fix/functional_ref_test.dart | 18 -- .../avoid_build_context_in_providers_lint.md | 12 +- .../advanced/select/select_async/codegen.dart | 1 + .../cancel/detail_screen_cancel/codegen.dart | 1 + .../detail_screen_debounce/codegen.dart | 1 + .../provider_with_extension/codegen.dart | 1 + .../fetch_activity/codegen.dart | 1 + website/docs/concepts/about_codegen/main.dart | 1 + .../provider_type/async_fn_future.dart | 1 + .../provider_type/async_fn_stream.dart | 1 + .../provider_type/auto_dispose.dart | 1 + .../about_codegen/provider_type/family.dart | 1 + .../provider_type/family_fn.dart | 1 + .../about_codegen/provider_type/sync_fn.dart | 1 + .../city_provider/codegen.dart | 1 + .../read_in_provider/codegen.dart | 1 + .../select_async_provider/codegen.dart | 1 + .../weather_provider/codegen.dart | 1 + .../whole_object_provider/codegen.dart | 1 + .../lifecycle_on_dispose/codegen.dart | 1 + .../creating_a_provider/codegen.dart | 1 + .../declaring_many_providers/codegen.dart | 1 + .../docs/concepts/reading/listen/codegen.dart | 1 + .../concepts/reading/provider/codegen.dart | 1 + .../docs/concepts/reading/watch/codegen.dart | 1 + .../auto_dispose/cache_for_usage/codegen.dart | 1 + .../auto_dispose/codegen_keep_alive.dart | 1 + .../auto_dispose/keep_alive/codegen.dart | 1 + .../on_dispose_example/codegen.dart | 1 + .../functional_ref/codegen.dart | 1 + .../listen_example/codegen.dart | 1 + .../notifier_ref/codegen.dart | 1 + .../watch_placement/codegen.dart | 1 + .../first_request/codegen/provider.dart | 1 + .../passing_args/family/codegen.dart | 1 + .../passing_args/no_arg_provider/codegen.dart | 1 + .../codegen/todo_list_provider.dart | 1 + .../testing/provider_to_mock/codegen.dart | 1 + .../websockets_sync/pipe_change_notifier.dart | 1 + .../sync_definition/codegen.dart | 1 + website/docs/from_provider/family/family.dart | 1 + .../motivation/async_values/async_values.dart | 1 + .../motivation/auto_dispose/auto_dispose.dart | 1 + .../motivation/combine/combine.dart | 1 + .../motivation/same_type/same_type.dart | 1 + .../introduction/why_riverpod/codegen.dart | 1 + .../config_provider/codegen.dart | 1 + .../completed_todos/completed_todos.dart | 1 + .../live_stream_chat_provider/codegen.dart | 1 + website/static/snippets/create.dart | 1 + 66 files changed, 478 insertions(+), 73 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 7ee5dfa6d..f7880c29b 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -11,6 +11,9 @@ analyzer: included_file_warning: ignore # false positive when using Freezed invalid_annotation_target: ignore + # I prefer specifying a parameter on a widget even if they are unused (such as Key) + # for the sake of consistency. + unused_element_parameter: false linter: rules: diff --git a/examples/marvel/analysis_options.yaml b/examples/marvel/analysis_options.yaml index fd37ac1ff..611834f1a 100644 --- a/examples/marvel/analysis_options.yaml +++ b/examples/marvel/analysis_options.yaml @@ -6,3 +6,6 @@ analyzer: errors: # Some assets are voluntarily gitignored asset_does_not_exist: ignore + # I prefer specifying a parameter on a widget even if they are unused (such as Key) + # for the sake of consistency. + unused_element_parameter: false \ No newline at end of file diff --git a/packages/flutter_riverpod/lib/src/builders.dart b/packages/flutter_riverpod/lib/src/builders.dart index 42e60ae7c..09567226e 100644 --- a/packages/flutter_riverpod/lib/src/builders.dart +++ b/packages/flutter_riverpod/lib/src/builders.dart @@ -8,8 +8,6 @@ // You can then use it in your terminal by executing: // generate_providers -// ignore_for_file: invalid_use_of_internal_member - import 'package:flutter/foundation.dart'; import 'package:meta/meta.dart'; diff --git a/packages/hooks_riverpod/pubspec.yaml b/packages/hooks_riverpod/pubspec.yaml index eb4d45f5b..4f7ea2acb 100644 --- a/packages/hooks_riverpod/pubspec.yaml +++ b/packages/hooks_riverpod/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: collection: ^1.15.0 flutter: sdk: flutter - flutter_hooks: '>=0.18.0 <0.21.0' + flutter_hooks: '>=0.18.0 <0.22.0' flutter_riverpod: 3.0.0-dev.3 riverpod: 3.0.0-dev.3 state_notifier: ">=0.7.2 <2.0.0" diff --git a/packages/riverpod/lib/src/core/ref.dart b/packages/riverpod/lib/src/core/ref.dart index b401bee2d..d48e4a879 100644 --- a/packages/riverpod/lib/src/core/ref.dart +++ b/packages/riverpod/lib/src/core/ref.dart @@ -205,7 +205,7 @@ final = Provider(dependencies: []); /// Using [asReload] will disable this behavior and count as a /// "hard refresh". /// - /// If used on a provider which is not initialized, this method will have no effect. + /// If used on a provider which is not initialized or disposed, this method will have no effect. /// {@endtemplate} void invalidate(ProviderOrFamily providerOrFamily, {bool asReload = false}) { _throwIfInvalidUsage(); diff --git a/packages/riverpod_analyzer_utils_tests/test/ref_invocation_test.dart b/packages/riverpod_analyzer_utils_tests/test/ref_invocation_test.dart index b56d2c3c7..17c6f930e 100644 --- a/packages/riverpod_analyzer_utils_tests/test/ref_invocation_test.dart +++ b/packages/riverpod_analyzer_utils_tests/test/ref_invocation_test.dart @@ -6,15 +6,15 @@ import 'analyzer_test_utils.dart'; // ignore: invalid_use_of_internal_member extension on RiverpodAnalysisResult { List get refWatchInvocations { - return refInvocations.cast(); + return refInvocations.whereType().toList(); } List get refListenInvocations { - return refInvocations.cast(); + return refInvocations.whereType().toList(); } List get refReadInvocations { - return refInvocations.cast(); + return refInvocations.whereType().toList(); } } @@ -436,8 +436,93 @@ final provider = Provider((ref) { ); }); - testSource('Decodes unknown ref usages', - timeout: const Timeout.factor(4), source: ''' + testSource('Decodes nested ref.read invocations with family providers', + runGenerator: true, source: ''' +import 'package:riverpod/riverpod.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'foo.g.dart'; + +final dep = FutureProvider((ref) => 0); +final dep2 = FutureProvider.family((ref, int arg) => 0); +final dep3 = FutureProvider.family((ref, int arg) => 0); + +final provider = Provider((ref) { + ref.read(dep2(ref.read(dep))); + + return 0; +}); + +final provider2 = Provider((ref) { + ref.read(dep3(ref.read(dep2(ref.read(dep))))); + + return 0; +}); + +int transformArg(int arg) { + return arg; +} + +final provider3 = Provider((ref) { + ref.read(dep3(transformArg(ref.read(dep)))); + + return 0; +}); +''', (resolver, unit, units) async { + final result = await resolver.resolveRiverpodAnalysisResult(); + + expect(result.refReadInvocations, hasLength(7)); + expect(result.refInvocations, result.refReadInvocations); + + // provider + expect(result.refReadInvocations[0].node.toSource(), 'ref.read(dep)'); + expect(result.refReadInvocations[0].function.toSource(), 'read'); + expect( + result.refReadInvocations[0].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('dep').providerElement, + ), + ); + + expect( + result.refReadInvocations[1].node.toSource(), + 'ref.read(dep2(ref.read(dep)))', + ); + expect(result.refReadInvocations[1].function.toSource(), 'read'); + expect( + result.refReadInvocations[1].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('dep2').providerElement, + ), + ); + + // provider2 + expect(result.refReadInvocations[2].node.toSource(), 'ref.read(dep)'); + expect( + result.refReadInvocations[3].node.toSource(), + 'ref.read(dep2(ref.read(dep)))', + ); + expect( + result.refReadInvocations[4].node.toSource(), + 'ref.read(dep3(ref.read(dep2(ref.read(dep)))))', + ); + expect(result.refReadInvocations[4].function.toSource(), 'read'); + expect( + result.refReadInvocations[4].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('dep3').providerElement, + ), + ); + + // provider3 + expect(result.refReadInvocations[5].node.toSource(), 'ref.read(dep)'); + expect( + result.refReadInvocations[6].node.toSource(), + 'ref.read(dep3(transformArg(ref.read(dep))))', + ); + }); + + testSource('Decodes unknown ref usages', source: ''' import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -592,6 +677,53 @@ void fn(_Ref ref) { ); }); + testSource('Decodes mix of nested ref.watch and ref.read invocations', + runGenerator: true, source: ''' +import 'package:riverpod/riverpod.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'foo.g.dart'; + +final dep = FutureProvider((ref) => 0); +final dep2 = FutureProvider.family((ref, int arg) => 0); + +final provider = Provider((ref) { + ref.watch(dep2(ref.read(dep))); + + return 0; +}); +''', (resolver, unit, units) async { + final result = await resolver.resolveRiverpodAnalysisResult(); + + expect(result.refWatchInvocations, hasLength(1)); + expect(result.refReadInvocations, hasLength(1)); + expect( + result.refInvocations, + [...result.refReadInvocations, ...result.refWatchInvocations], + ); + + expect( + result.refWatchInvocations[0].node.toSource(), + 'ref.watch(dep2(ref.read(dep)))', + ); + expect(result.refWatchInvocations[0].function.toSource(), 'watch'); + expect( + result.refWatchInvocations[0].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('dep2').providerElement, + ), + ); + + expect(result.refReadInvocations[0].node.toSource(), 'ref.read(dep)'); + expect(result.refReadInvocations[0].function.toSource(), 'read'); + expect( + result.refReadInvocations[0].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('dep').providerElement, + ), + ); + }); + testSource('Decodes provider.query ref.watch usages', timeout: const Timeout.factor(4), runGenerator: true, source: r''' import 'package:riverpod/riverpod.dart'; diff --git a/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart b/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart index 041a421b6..795d24e3c 100644 --- a/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart +++ b/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart @@ -652,6 +652,89 @@ void fn(_Ref ref) { ); }); + testSource('Decodes nested ref.watch invocations with family providers', + runGenerator: true, source: ''' +import 'package:riverpod/riverpod.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter/material.dart'; + +part 'foo.g.dart'; + +final family = FutureProvider.family((ref, id) => 0); + +@Riverpod(keepAlive: true) +Future family2(Family2Ref ref, {required int id}) async => 0; + +class MyWidget extends ConsumerWidget { + const MyWidget({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + ref.watch(family(ref.read(family2Provider(id: 0)))); + ref.watch(family2Provider(ref.watch(family(id: 0)))); + return Container(); + } +} +''', (resolver, unit, units) async { + final result = await resolver.resolveRiverpodAnalysisResult(); + + expect(result.widgetRefWatchInvocations, hasLength(3)); + + expect( + result.widgetRefWatchInvocations[0].node.toSource(), + 'ref.watch(family(ref.read(family2Provider(id: 0))))', + ); + expect(result.widgetRefWatchInvocations[0].function.toSource(), 'watch'); + expect( + result.widgetRefWatchInvocations[0].listenable.provider?.node.toSource(), + 'family(ref.read(family2Provider(id: 0)))', + ); + expect( + result.widgetRefWatchInvocations[0].listenable.provider?.node.toSource(), + 'family', + ); + expect( + result.widgetRefWatchInvocations[0].listenable.provider?.providerElement, + same( + result.legacyProviderDeclarations.findByName('family').providerElement, + ), + ); + expect( + result.widgetRefWatchInvocations[0].listenable.familyArguments + ?.toSource(), + '(ref.read(family2Provider(id: 0)))', + ); + + // ref.watch(family2Provider(ref.watch(family(id: 0))); + expect( + result.widgetRefWatchInvocations[1].node.toSource(), + 'ref.watch(family2Provider(ref.watch(family(id: 0))))', + ); + expect(result.widgetRefWatchInvocations[1].function.toSource(), 'watch'); + expect( + result.widgetRefWatchInvocations[1].listenable.provider?.node.toSource(), + 'family2Provider(ref.watch(family(id: 0)))', + ); + expect( + result.widgetRefWatchInvocations[1].listenable.provider?.node.toSource(), + 'family2Provider', + ); + expect( + result.widgetRefWatchInvocations[1].listenable.provider?.providerElement, + same( + result.functionalProviderDeclarations + .findByName('family2') + .providerElement, + ), + ); + expect( + result.widgetRefWatchInvocations[1].listenable.familyArguments + ?.toSource(), + '(ref.watch(family(id: 0)))', + ); + }); + testSource('Decodes provider.query ref.watch usages', timeout: const Timeout.factor(4), runGenerator: true, source: r''' import 'package:riverpod/riverpod.dart'; diff --git a/packages/riverpod_generator/CHANGELOG.md b/packages/riverpod_generator/CHANGELOG.md index b209439e1..348a2e2a1 100644 --- a/packages/riverpod_generator/CHANGELOG.md +++ b/packages/riverpod_generator/CHANGELOG.md @@ -17,6 +17,10 @@ - Added support for `@Riverpod(retry: ...)` +## 2.6.3 - 2024-11-18 + +- `riverpod_analyzer_utils` upgraded to `0.5.8` + ## 2.6.2 - 2024-10-27 - `riverpod_analyzer_utils` upgraded to `0.5.7` diff --git a/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart b/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart index 228a0eff2..66f008712 100644 --- a/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart +++ b/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart @@ -1,3 +1,4 @@ +import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'sync.g.dart'; diff --git a/packages/riverpod_lint/CHANGELOG.md b/packages/riverpod_lint/CHANGELOG.md index 9fa55e203..de0da62e5 100644 --- a/packages/riverpod_lint/CHANGELOG.md +++ b/packages/riverpod_lint/CHANGELOG.md @@ -42,6 +42,10 @@ Various lints had their severity changed: - `riverpod` upgraded to `3.0.0-dev.0` +## 2.6.3 - 2024-11-18 + +- provider_dependencies now correctly detects nested ref invocations where a dependency is used as a parameter of another dependency (thanks to @josh-burton) + ## 2.6.2 - 2024-10-27 - Support latest custom_lint diff --git a/packages/riverpod_lint/lib/src/lints/functional_ref.dart b/packages/riverpod_lint/lib/src/lints/functional_ref.dart index a5c804a5e..ad8278f8d 100644 --- a/packages/riverpod_lint/lib/src/lints/functional_ref.dart +++ b/packages/riverpod_lint/lib/src/lints/functional_ref.dart @@ -5,10 +5,8 @@ import 'package:analyzer/error/error.dart' // ignore: undefined_hidden_name, necessary to support lower analyzer version LintCode; import 'package:analyzer/error/listener.dart'; -import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart'; import 'package:collection/collection.dart'; import 'package:custom_lint_builder/custom_lint_builder.dart'; -import 'package:meta/meta.dart'; import '../riverpod_custom_lint.dart'; @@ -133,41 +131,6 @@ extension LibraryForNode on AstNode { LibraryElement get library => (root as CompilationUnit).library; } -extension ImportFix on DartFileEditBuilder { - @useResult - String importRef() { - return _importWithPrefix('Ref'); - } - - @useResult - String _importWithPrefix(String name) { - final hooksRiverpodUri = - Uri(scheme: 'package', path: 'hooks_riverpod/hooks_riverpod.dart'); - final flutterRiverpodUri = - Uri(scheme: 'package', path: 'flutter_riverpod/flutter_riverpod.dart'); - final riverpodUri = Uri(scheme: 'package', path: 'riverpod/riverpod.dart'); - - if (importsLibrary(hooksRiverpodUri)) { - return _buildImport(hooksRiverpodUri, name); - } - - if (importsLibrary(flutterRiverpodUri)) { - return _buildImport(flutterRiverpodUri, name); - } - - return _buildImport(riverpodUri, name); - } - - String _buildImport(Uri uri, String name) { - final import = importLibraryElement(uri); - - final prefix = import.prefix; - if (prefix != null) return '$prefix.$name'; - - return name; - } -} - TypeAnnotation typeAnnotationFor(FormalParameter param) { if (param is DefaultFormalParameter) { return typeAnnotationFor(param.parameter); diff --git a/packages/riverpod_lint/lib/src/lints/provider_dependencies.dart b/packages/riverpod_lint/lib/src/lints/provider_dependencies.dart index a7054907e..af555ef47 100644 --- a/packages/riverpod_lint/lib/src/lints/provider_dependencies.dart +++ b/packages/riverpod_lint/lib/src/lints/provider_dependencies.dart @@ -2,7 +2,7 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart' hide - // ignore: undefined_hidden_name, necessary to support broad analyzer versions + // ignore: undefined_hidden_name, necessary to support lower analyzer version LintCode; import 'package:analyzer/error/listener.dart'; import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart'; diff --git a/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart b/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart index f7f660062..894b5db24 100644 --- a/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart +++ b/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart @@ -1,3 +1,4 @@ +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'convert_functional_provider_to_class_based.g.dart'; diff --git a/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff b/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff index 0980c5b6b..729b5335f 100644 --- a/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff +++ b/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff @@ -1,6 +1,6 @@ Message: `Convert to class-based provider` Priority: 100 -Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:7`: +Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:8`: ``` /// Some comment @riverpod @@ -15,7 +15,7 @@ Diff for file `test/assists/convert_functional_provider_to_class_based/convert_f --- Message: `Convert to class-based provider` Priority: 100 -Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:11`: +Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:12`: ``` /// Some comment @riverpod diff --git a/packages/riverpod_lint_flutter_test/test/golden.dart b/packages/riverpod_lint_flutter_test/test/golden.dart index 7d362c40b..a368db2d1 100644 --- a/packages/riverpod_lint_flutter_test/test/golden.dart +++ b/packages/riverpod_lint_flutter_test/test/golden.dart @@ -1,7 +1,16 @@ +import 'dart:convert'; import 'dart:io'; +import 'package:analyzer/dart/analysis/results.dart'; +import 'package:analyzer/dart/analysis/utilities.dart'; +import 'package:analyzer/source/source_range.dart'; +import 'package:analyzer_plugin/protocol/protocol_generated.dart'; +import 'package:custom_lint_core/custom_lint_core.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:path/path.dart'; +import 'package:pubspec_parse/pubspec_parse.dart'; import 'package:test/test.dart'; +import 'package:riverpod_lint/src/riverpod_custom_lint.dart'; final _goldenWrite = bool.parse(Platform.environment[r'goldens'] ?? 'false'); @@ -109,3 +118,176 @@ class _MatchesGoldenFile extends Matcher { return mismatchDescription.add('Unknown mismatch'); } } + +File writeToTemporaryFile(String content) { + final tempDir = Directory.systemTemp.createTempSync(); + addTearDown(() => tempDir.deleteSync(recursive: true)); + + final file = File(join(tempDir.path, 'file.dart')) + ..createSync(recursive: true) + ..writeAsStringSync(content); + + return file; +} + +const _cursor = '<>'; + +class OffsetHelper { + OffsetHelper._(this._content); + + final String _content; + + /// Strings must be code of the format: + /// + /// ``dart + /// Some<>Code + /// ``` + /// + /// where `<>` is the location of the cursor. + /// + /// At least one `<>` must be present, or the function will throw. + Iterable rangesForString(String string) sync* { + final cursors = '<>'.allMatches(string).toList(); + if (cursors.isEmpty) { + throw ArgumentError('String does not contain any cursors: $string'); + } + + final stringWithoutCursors = string.replaceAll(_cursor, ''); + + final start = _content.indexOf(stringWithoutCursors); + if (start == -1) { + throw ArgumentError('String not found in content: $stringWithoutCursors'); + } + + if (_content.indexOf(stringWithoutCursors, start + 1) != -1) { + throw ArgumentError( + 'Found the string twice in the content: $stringWithoutCursors', + ); + } + + for (final (index, cursor) in cursors.indexed) { + // In the case of multiple cursors, we need to adjust the offset + // to account for the previous cursors. + final actualCursorStart = cursor.start - 2 * index; + yield SourceRange(start + actualCursorStart, 0); + } + } + + Future> runAssist( + RiverpodAssist assist, + ResolvedUnitResult result, + Iterable cursorRanges, { + Pubspec? pubspec, + }) async { + return Future.wait( + cursorRanges.map( + (range) => assist.testRun(result, range, pubspec: pubspec), + ), + ).then((value) => value.expand((e) => e)); + } + + void debugOffset(List offsets) { + offsets.sort(); + + var mappedContent = _content; + for (final offset in offsets.reversed) { + mappedContent = mappedContent.substring(0, offset) + + '<>' + + mappedContent.substring(offset); + } + + final lines = LineSplitter.split(mappedContent).toList(); + + final codes = []; + + StringBuffer? buffer; + + void openBuffer() { + buffer ??= StringBuffer("helper.rangesForString('''\n"); + } + + void closeBuffer() { + if (buffer == null) return; + + buffer!.write("''')"); + codes.add(buffer.toString()); + buffer = null; + } + + // Print all lines with <> in them and one line before and after. + for (final (index, line) in lines.indexed) { + if (buffer == null && line.trim().isEmpty) continue; + + final hasCursor = line.contains(_cursor); + late final hadCursor = index >= 1 && lines[index - 1].contains(_cursor); + late final willHaveCursor = + index + 1 < lines.length && lines[index + 1].contains(_cursor); + + if (hasCursor || hadCursor || willHaveCursor) { + openBuffer(); + buffer!.writeln(line); + } else { + closeBuffer(); + } + } + + if (buffer != null) closeBuffer(); + + if (codes.length == 1) { + print(' final cursors = ${codes.single};'); + } else { + print(' final cursors = ['); + for (final code in codes) { + print(' ...$code,'); + } + print(' ];'); + } + } +} + +void testGolden( + String description, + String fileName, + Future> Function( + ResolvedUnitResult unit, + OffsetHelper offsetHelper, + ) body, { + required String sourcePath, +}) { + test(description, () async { + final file = File(sourcePath).absolute; + + final result = await resolveFile2(path: file.path); + result as ResolvedUnitResult; + + final source = file.readAsStringSync(); + final changes = await body(result, OffsetHelper._(source)) + .then((value) => value.toList()); + + try { + expect( + changes, + matcherNormalizedPrioritizedSourceChangeSnapshot( + fileName, + sources: {'**': source}, + relativePath: Directory.current.path, + ), + ); + } on TestFailure { + if (!_goldenWrite) rethrow; + + final source = File(sourcePath).readAsStringSync(); + final result = encodePrioritizedSourceChanges( + changes, + sources: {'**': source}, + relativePath: Directory.current.path, + ); + + final golden = File('test/$fileName'); + golden + ..createSync(recursive: true) + ..writeAsStringSync(result); + return; + } + }); +} diff --git a/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart b/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart index e3ca4231b..faa14343c 100644 --- a/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart +++ b/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart @@ -1,6 +1,7 @@ // ignore_for_file: unused_element import 'package:flutter/widgets.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'avoid_build_context_in_providers.g.dart'; diff --git a/packages/riverpod_lint_flutter_test/test/lints/functional_ref/fix/functional_ref_test.dart b/packages/riverpod_lint_flutter_test/test/lints/functional_ref/fix/functional_ref_test.dart index 34a4d87f6..a28b4cdd1 100644 --- a/packages/riverpod_lint_flutter_test/test/lints/functional_ref/fix/functional_ref_test.dart +++ b/packages/riverpod_lint_flutter_test/test/lints/functional_ref/fix/functional_ref_test.dart @@ -21,22 +21,4 @@ void main() { return changes.flattened; }, ); - - testGolden( - 'Verify that @riverpod functions have a Ref', - 'test/lints/functional_ref/fix/failing_functional_ref.diff', - sourcePath: 'test/lints/functional_ref/failing_functional_ref.dart', - (result, helper) async { - const lint = FunctionalRef(); - final fix = lint.getFixes().single; - - final errors = await lint.testRun(result); - - final changes = await Future.wait([ - for (final error in errors) fix.testRun(result, error, errors), - ]); - - return changes.flattened; - }, - ); } diff --git a/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md b/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md index 589c4dde1..36544c25b 100644 --- a/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md +++ b/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md @@ -1,7 +1,7 @@ code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:12:3 +test/lints/avoid_build_context_in_providers.dart:13:3 ```dart Ref ref, @@ -16,7 +16,7 @@ test/lints/avoid_build_context_in_providers.dart:12:3 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:14:3 +test/lints/avoid_build_context_in_providers.dart:15:3 ```dart BuildContext context1, { @@ -31,7 +31,7 @@ test/lints/avoid_build_context_in_providers.dart:14:3 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:22:5 +test/lints/avoid_build_context_in_providers.dart:23:5 ```dart int build( @@ -46,7 +46,7 @@ test/lints/avoid_build_context_in_providers.dart:22:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:24:5 +test/lints/avoid_build_context_in_providers.dart:25:5 ```dart BuildContext context1, { @@ -61,7 +61,7 @@ test/lints/avoid_build_context_in_providers.dart:24:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:30:5 +test/lints/avoid_build_context_in_providers.dart:31:5 ```dart void event( @@ -76,7 +76,7 @@ test/lints/avoid_build_context_in_providers.dart:30:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:32:5 +test/lints/avoid_build_context_in_providers.dart:33:5 ```dart BuildContext context3, { diff --git a/website/docs/advanced/select/select_async/codegen.dart b/website/docs/advanced/select/select_async/codegen.dart index 9ddf7256b..94b911bca 100644 --- a/website/docs/advanced/select/select_async/codegen.dart +++ b/website/docs/advanced/select/select_async/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable, avoid_multiple_declarations_per_line, omit_local_variable_types, prefer_final_locals, use_key_in_widget_constructors, body_might_complete_normally_nullable +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart b/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart index 8094b9996..0fe63d984 100644 --- a/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart +++ b/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:http/http.dart' as http; +import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../detail_screen/codegen.dart'; diff --git a/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart b/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart index 732f8e134..54ec304da 100644 --- a/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart +++ b/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/case_studies/cancel/provider_with_extension/codegen.dart b/website/docs/case_studies/cancel/provider_with_extension/codegen.dart index e3663c7a0..85db5313b 100644 --- a/website/docs/case_studies/cancel/provider_with_extension/codegen.dart +++ b/website/docs/case_studies/cancel/provider_with_extension/codegen.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../detail_screen/codegen.dart'; diff --git a/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart b/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart index 16ac99207..54cbd50da 100644 --- a/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart +++ b/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/concepts/about_codegen/main.dart b/website/docs/concepts/about_codegen/main.dart index 6dbbf14aa..b0a1a4347 100644 --- a/website/docs/concepts/about_codegen/main.dart +++ b/website/docs/concepts/about_codegen/main.dart @@ -1,5 +1,6 @@ // ignore_for_file: use_key_in_widget_constructors, omit_local_variable_types, avoid_unused_constructor_parameters +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'main.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart b/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart index 7ab60af7c..27f448f98 100644 --- a/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart +++ b/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'async_fn_future.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart b/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart index 43b3a877f..a7080cdc9 100644 --- a/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart +++ b/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'async_fn_stream.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart b/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart index 3351a2da9..ecc7afa9e 100644 --- a/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart +++ b/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'auto_dispose.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/family.dart b/website/docs/concepts/about_codegen/provider_type/family.dart index d4a88c306..22db5c5f8 100644 --- a/website/docs/concepts/about_codegen/provider_type/family.dart +++ b/website/docs/concepts/about_codegen/provider_type/family.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/family_fn.dart b/website/docs/concepts/about_codegen/provider_type/family_fn.dart index 6ac513340..e7e941e5f 100644 --- a/website/docs/concepts/about_codegen/provider_type/family_fn.dart +++ b/website/docs/concepts/about_codegen/provider_type/family_fn.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family_fn.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/sync_fn.dart b/website/docs/concepts/about_codegen/provider_type/sync_fn.dart index 73e82b7e2..0099d43b4 100644 --- a/website/docs/concepts/about_codegen/provider_type/sync_fn.dart +++ b/website/docs/concepts/about_codegen/provider_type/sync_fn.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'sync_fn.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/city_provider/codegen.dart b/website/docs/concepts/combining_provider_states/city_provider/codegen.dart index 092367038..39edaa161 100644 --- a/website/docs/concepts/combining_provider_states/city_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/city_provider/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart b/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart index c76e47a97..556d228c0 100644 --- a/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart b/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart index 0bdb6db69..1d76926cc 100644 --- a/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart @@ -1,4 +1,5 @@ import 'package:dio/dio.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'models.dart'; diff --git a/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart b/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart index a66b91521..0d04d544e 100644 --- a/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart b/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart index cb3a1ec73..e52b9f54b 100644 --- a/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart @@ -1,4 +1,5 @@ import 'package:dio/dio.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'models.dart'; diff --git a/website/docs/concepts/lifecycle_on_dispose/codegen.dart b/website/docs/concepts/lifecycle_on_dispose/codegen.dart index 35f832a69..ab64f257e 100644 --- a/website/docs/concepts/lifecycle_on_dispose/codegen.dart +++ b/website/docs/concepts/lifecycle_on_dispose/codegen.dart @@ -2,6 +2,7 @@ import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/providers/creating_a_provider/codegen.dart b/website/docs/concepts/providers/creating_a_provider/codegen.dart index 15efd2d7a..163f5b4b5 100644 --- a/website/docs/concepts/providers/creating_a_provider/codegen.dart +++ b/website/docs/concepts/providers/creating_a_provider/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/providers/declaring_many_providers/codegen.dart b/website/docs/concepts/providers/declaring_many_providers/codegen.dart index 276cab4dd..17b1ccab8 100644 --- a/website/docs/concepts/providers/declaring_many_providers/codegen.dart +++ b/website/docs/concepts/providers/declaring_many_providers/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/reading/listen/codegen.dart b/website/docs/concepts/reading/listen/codegen.dart index b4531515a..ac2cd9cae 100644 --- a/website/docs/concepts/reading/listen/codegen.dart +++ b/website/docs/concepts/reading/listen/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: omit_local_variable_types, avoid_types_on_closure_parameters, avoid_print +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../counter/codegen.dart'; diff --git a/website/docs/concepts/reading/provider/codegen.dart b/website/docs/concepts/reading/provider/codegen.dart index 954941a9b..46e832fe8 100644 --- a/website/docs/concepts/reading/provider/codegen.dart +++ b/website/docs/concepts/reading/provider/codegen.dart @@ -1,4 +1,5 @@ // ignore_for_file: avoid_positional_boolean_parameters +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/reading/watch/codegen.dart b/website/docs/concepts/reading/watch/codegen.dart index 947af2a51..ebbaa8d7c 100644 --- a/website/docs/concepts/reading/watch/codegen.dart +++ b/website/docs/concepts/reading/watch/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: omit_local_variable_types, avoid_types_on_closure_parameters, avoid_print +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart b/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart index a19f6a897..69dad3871 100644 --- a/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart +++ b/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/auto_dispose/codegen_keep_alive.dart b/website/docs/essentials/auto_dispose/codegen_keep_alive.dart index 74af13186..48eba50c6 100644 --- a/website/docs/essentials/auto_dispose/codegen_keep_alive.dart +++ b/website/docs/essentials/auto_dispose/codegen_keep_alive.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen_keep_alive.g.dart'; diff --git a/website/docs/essentials/auto_dispose/keep_alive/codegen.dart b/website/docs/essentials/auto_dispose/keep_alive/codegen.dart index a3f17cc7c..8d2afa235 100644 --- a/website/docs/essentials/auto_dispose/keep_alive/codegen.dart +++ b/website/docs/essentials/auto_dispose/keep_alive/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart b/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart index a7eafb658..d783c47fd 100644 --- a/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart +++ b/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart @@ -2,6 +2,7 @@ import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/functional_ref/codegen.dart b/website/docs/essentials/combining_requests/functional_ref/codegen.dart index e776d8c31..8f0ea7b7c 100644 --- a/website/docs/essentials/combining_requests/functional_ref/codegen.dart +++ b/website/docs/essentials/combining_requests/functional_ref/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/listen_example/codegen.dart b/website/docs/essentials/combining_requests/listen_example/codegen.dart index 8de5958a6..dc8a14a77 100644 --- a/website/docs/essentials/combining_requests/listen_example/codegen.dart +++ b/website/docs/essentials/combining_requests/listen_example/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable, avoid_print +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/notifier_ref/codegen.dart b/website/docs/essentials/combining_requests/notifier_ref/codegen.dart index c184574c3..35609efa1 100644 --- a/website/docs/essentials/combining_requests/notifier_ref/codegen.dart +++ b/website/docs/essentials/combining_requests/notifier_ref/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: unused_local_variable +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/watch_placement/codegen.dart b/website/docs/essentials/combining_requests/watch_placement/codegen.dart index d5a9cd653..e2ae6e347 100644 --- a/website/docs/essentials/combining_requests/watch_placement/codegen.dart +++ b/website/docs/essentials/combining_requests/watch_placement/codegen.dart @@ -1,6 +1,7 @@ // ignore_for_file: unused_local_variable import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/first_request/codegen/provider.dart b/website/docs/essentials/first_request/codegen/provider.dart index 9a68b34be..afaff3513 100644 --- a/website/docs/essentials/first_request/codegen/provider.dart +++ b/website/docs/essentials/first_request/codegen/provider.dart @@ -1,6 +1,7 @@ /* SNIPPET START */ import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'activity.dart'; diff --git a/website/docs/essentials/passing_args/family/codegen.dart b/website/docs/essentials/passing_args/family/codegen.dart index ab4743a20..5c8a0117e 100644 --- a/website/docs/essentials/passing_args/family/codegen.dart +++ b/website/docs/essentials/passing_args/family/codegen.dart @@ -1,6 +1,7 @@ // ignore_for_file: avoid_print import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../first_request/codegen/activity.dart'; diff --git a/website/docs/essentials/passing_args/no_arg_provider/codegen.dart b/website/docs/essentials/passing_args/no_arg_provider/codegen.dart index da1c34adb..eee4a724c 100644 --- a/website/docs/essentials/passing_args/no_arg_provider/codegen.dart +++ b/website/docs/essentials/passing_args/no_arg_provider/codegen.dart @@ -1,5 +1,6 @@ // ignore_for_file: avoid_print +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../first_request/codegen/activity.dart'; diff --git a/website/docs/essentials/side_effects/codegen/todo_list_provider.dart b/website/docs/essentials/side_effects/codegen/todo_list_provider.dart index f0a84c83a..e80b9d4a0 100644 --- a/website/docs/essentials/side_effects/codegen/todo_list_provider.dart +++ b/website/docs/essentials/side_effects/codegen/todo_list_provider.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/testing/provider_to_mock/codegen.dart b/website/docs/essentials/testing/provider_to_mock/codegen.dart index 073779b2d..078148729 100644 --- a/website/docs/essentials/testing/provider_to_mock/codegen.dart +++ b/website/docs/essentials/testing/provider_to_mock/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/websockets_sync/pipe_change_notifier.dart b/website/docs/essentials/websockets_sync/pipe_change_notifier.dart index 0cc75bea6..03d665216 100644 --- a/website/docs/essentials/websockets_sync/pipe_change_notifier.dart +++ b/website/docs/essentials/websockets_sync/pipe_change_notifier.dart @@ -1,6 +1,7 @@ // ignore_for_file: omit_local_variable_types import 'package:flutter/widgets.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'pipe_change_notifier.g.dart'; diff --git a/website/docs/essentials/websockets_sync/sync_definition/codegen.dart b/website/docs/essentials/websockets_sync/sync_definition/codegen.dart index cdddcb32d..eeaba83b6 100644 --- a/website/docs/essentials/websockets_sync/sync_definition/codegen.dart +++ b/website/docs/essentials/websockets_sync/sync_definition/codegen.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/from_provider/family/family.dart b/website/docs/from_provider/family/family.dart index 61cf268fc..88012fd24 100644 --- a/website/docs/from_provider/family/family.dart +++ b/website/docs/from_provider/family/family.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family.g.dart'; diff --git a/website/docs/from_provider/motivation/async_values/async_values.dart b/website/docs/from_provider/motivation/async_values/async_values.dart index 0518dc0a7..96f694e2a 100644 --- a/website/docs/from_provider/motivation/async_values/async_values.dart +++ b/website/docs/from_provider/motivation/async_values/async_values.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../helpers/item.dart'; diff --git a/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart b/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart index 052686f61..fcb26dd6c 100644 --- a/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart +++ b/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'auto_dispose.g.dart'; diff --git a/website/docs/from_provider/motivation/combine/combine.dart b/website/docs/from_provider/motivation/combine/combine.dart index 521d231b7..f26e5d285 100644 --- a/website/docs/from_provider/motivation/combine/combine.dart +++ b/website/docs/from_provider/motivation/combine/combine.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'combine.g.dart'; diff --git a/website/docs/from_provider/motivation/same_type/same_type.dart b/website/docs/from_provider/motivation/same_type/same_type.dart index a46db40cf..1094a6950 100644 --- a/website/docs/from_provider/motivation/same_type/same_type.dart +++ b/website/docs/from_provider/motivation/same_type/same_type.dart @@ -1,4 +1,5 @@ import 'package:collection/collection.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../helpers/item.dart'; diff --git a/website/docs/introduction/why_riverpod/codegen.dart b/website/docs/introduction/why_riverpod/codegen.dart index bd784d449..5205e623c 100644 --- a/website/docs/introduction/why_riverpod/codegen.dart +++ b/website/docs/introduction/why_riverpod/codegen.dart @@ -1,6 +1,7 @@ // ignore_for_file: use_key_in_widget_constructors, omit_local_variable_types import 'package:dio/dio.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/providers/future_provider/config_provider/codegen.dart b/website/docs/providers/future_provider/config_provider/codegen.dart index e862b79f8..f8520a4ec 100644 --- a/website/docs/providers/future_provider/config_provider/codegen.dart +++ b/website/docs/providers/future_provider/config_provider/codegen.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/providers/provider/completed_todos/completed_todos.dart b/website/docs/providers/provider/completed_todos/completed_todos.dart index 720a034ba..bc04a41b9 100644 --- a/website/docs/providers/provider/completed_todos/completed_todos.dart +++ b/website/docs/providers/provider/completed_todos/completed_todos.dart @@ -1,3 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../todo/todo.dart'; diff --git a/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart b/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart index 6ac7b13c4..d5247516f 100644 --- a/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart +++ b/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'dart:io'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/static/snippets/create.dart b/website/static/snippets/create.dart index 236716169..418e7430e 100644 --- a/website/static/snippets/create.dart +++ b/website/static/snippets/create.dart @@ -2,6 +2,7 @@ import 'dart:convert'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; From ec753f99d5025dbaa9c622c4402fc12d10675829 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Tue, 19 Nov 2024 00:32:09 +0100 Subject: [PATCH 2/4] Lints --- packages/flutter_riverpod/lib/src/builders.dart | 2 ++ .../test/integration/generated/golden/lib/sync.dart | 1 - .../convert_functional_provider_to_class_based.dart | 1 - .../test/lints/avoid_build_context_in_providers.dart | 1 - website/docs/advanced/select/select_async/codegen.dart | 1 - .../docs/case_studies/cancel/detail_screen_cancel/codegen.dart | 1 - .../case_studies/cancel/detail_screen_debounce/codegen.dart | 1 - .../case_studies/cancel/provider_with_extension/codegen.dart | 1 - .../case_studies/pull_to_refresh/fetch_activity/codegen.dart | 1 - website/docs/concepts/about_codegen/main.dart | 1 - .../concepts/about_codegen/provider_type/async_fn_future.dart | 1 - .../concepts/about_codegen/provider_type/async_fn_stream.dart | 1 - .../docs/concepts/about_codegen/provider_type/auto_dispose.dart | 1 - website/docs/concepts/about_codegen/provider_type/family.dart | 1 - .../docs/concepts/about_codegen/provider_type/family_fn.dart | 1 - website/docs/concepts/about_codegen/provider_type/sync_fn.dart | 1 - .../combining_provider_states/city_provider/codegen.dart | 1 - .../combining_provider_states/read_in_provider/codegen.dart | 1 - .../select_async_provider/codegen.dart | 1 - .../combining_provider_states/weather_provider/codegen.dart | 1 - .../whole_object_provider/codegen.dart | 1 - website/docs/concepts/lifecycle_on_dispose/codegen.dart | 1 - .../docs/concepts/providers/creating_a_provider/codegen.dart | 1 - .../concepts/providers/declaring_many_providers/codegen.dart | 1 - website/docs/concepts/reading/listen/codegen.dart | 1 - website/docs/concepts/reading/provider/codegen.dart | 1 - website/docs/concepts/reading/watch/codegen.dart | 1 - .../docs/essentials/auto_dispose/cache_for_usage/codegen.dart | 1 - website/docs/essentials/auto_dispose/codegen_keep_alive.dart | 1 - website/docs/essentials/auto_dispose/keep_alive/codegen.dart | 1 - .../essentials/auto_dispose/on_dispose_example/codegen.dart | 1 - .../essentials/combining_requests/functional_ref/codegen.dart | 1 - .../essentials/combining_requests/listen_example/codegen.dart | 1 - .../essentials/combining_requests/notifier_ref/codegen.dart | 1 - .../essentials/combining_requests/watch_placement/codegen.dart | 1 - website/docs/essentials/first_request/codegen/provider.dart | 1 - website/docs/essentials/passing_args/family/codegen.dart | 1 - .../docs/essentials/passing_args/no_arg_provider/codegen.dart | 1 - .../essentials/side_effects/codegen/todo_list_provider.dart | 1 - website/docs/essentials/testing/provider_to_mock/codegen.dart | 1 - .../docs/essentials/websockets_sync/pipe_change_notifier.dart | 1 - .../essentials/websockets_sync/sync_definition/codegen.dart | 1 - website/docs/from_provider/family/family.dart | 1 - .../from_provider/motivation/async_values/async_values.dart | 1 - .../from_provider/motivation/auto_dispose/auto_dispose.dart | 1 - website/docs/from_provider/motivation/combine/combine.dart | 1 - website/docs/from_provider/motivation/same_type/same_type.dart | 1 - website/docs/introduction/why_riverpod/codegen.dart | 1 - .../docs/providers/future_provider/config_provider/codegen.dart | 1 - .../providers/provider/completed_todos/completed_todos.dart | 1 - .../stream_provider/live_stream_chat_provider/codegen.dart | 1 - website/static/snippets/create.dart | 1 - 52 files changed, 2 insertions(+), 51 deletions(-) diff --git a/packages/flutter_riverpod/lib/src/builders.dart b/packages/flutter_riverpod/lib/src/builders.dart index 09567226e..42e60ae7c 100644 --- a/packages/flutter_riverpod/lib/src/builders.dart +++ b/packages/flutter_riverpod/lib/src/builders.dart @@ -8,6 +8,8 @@ // You can then use it in your terminal by executing: // generate_providers +// ignore_for_file: invalid_use_of_internal_member + import 'package:flutter/foundation.dart'; import 'package:meta/meta.dart'; diff --git a/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart b/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart index 66f008712..228a0eff2 100644 --- a/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart +++ b/packages/riverpod_graph/test/integration/generated/golden/lib/sync.dart @@ -1,4 +1,3 @@ -import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'sync.g.dart'; diff --git a/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart b/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart index 894b5db24..f7f660062 100644 --- a/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart +++ b/packages/riverpod_lint_flutter_test/test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart @@ -1,4 +1,3 @@ -import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'convert_functional_provider_to_class_based.g.dart'; diff --git a/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart b/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart index faa14343c..e3ca4231b 100644 --- a/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart +++ b/packages/riverpod_lint_flutter_test/test/lints/avoid_build_context_in_providers.dart @@ -1,7 +1,6 @@ // ignore_for_file: unused_element import 'package:flutter/widgets.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'avoid_build_context_in_providers.g.dart'; diff --git a/website/docs/advanced/select/select_async/codegen.dart b/website/docs/advanced/select/select_async/codegen.dart index 94b911bca..9ddf7256b 100644 --- a/website/docs/advanced/select/select_async/codegen.dart +++ b/website/docs/advanced/select/select_async/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable, avoid_multiple_declarations_per_line, omit_local_variable_types, prefer_final_locals, use_key_in_widget_constructors, body_might_complete_normally_nullable -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart b/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart index 0fe63d984..8094b9996 100644 --- a/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart +++ b/website/docs/case_studies/cancel/detail_screen_cancel/codegen.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:http/http.dart' as http; -import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../detail_screen/codegen.dart'; diff --git a/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart b/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart index 54ec304da..732f8e134 100644 --- a/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart +++ b/website/docs/case_studies/cancel/detail_screen_debounce/codegen.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/case_studies/cancel/provider_with_extension/codegen.dart b/website/docs/case_studies/cancel/provider_with_extension/codegen.dart index 85db5313b..e3663c7a0 100644 --- a/website/docs/case_studies/cancel/provider_with_extension/codegen.dart +++ b/website/docs/case_studies/cancel/provider_with_extension/codegen.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../detail_screen/codegen.dart'; diff --git a/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart b/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart index 54cbd50da..16ac99207 100644 --- a/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart +++ b/website/docs/case_studies/pull_to_refresh/fetch_activity/codegen.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/concepts/about_codegen/main.dart b/website/docs/concepts/about_codegen/main.dart index b0a1a4347..6dbbf14aa 100644 --- a/website/docs/concepts/about_codegen/main.dart +++ b/website/docs/concepts/about_codegen/main.dart @@ -1,6 +1,5 @@ // ignore_for_file: use_key_in_widget_constructors, omit_local_variable_types, avoid_unused_constructor_parameters -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'main.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart b/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart index 27f448f98..7ab60af7c 100644 --- a/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart +++ b/website/docs/concepts/about_codegen/provider_type/async_fn_future.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'async_fn_future.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart b/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart index a7080cdc9..43b3a877f 100644 --- a/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart +++ b/website/docs/concepts/about_codegen/provider_type/async_fn_stream.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'async_fn_stream.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart b/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart index ecc7afa9e..3351a2da9 100644 --- a/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart +++ b/website/docs/concepts/about_codegen/provider_type/auto_dispose.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'auto_dispose.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/family.dart b/website/docs/concepts/about_codegen/provider_type/family.dart index 22db5c5f8..d4a88c306 100644 --- a/website/docs/concepts/about_codegen/provider_type/family.dart +++ b/website/docs/concepts/about_codegen/provider_type/family.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/family_fn.dart b/website/docs/concepts/about_codegen/provider_type/family_fn.dart index e7e941e5f..6ac513340 100644 --- a/website/docs/concepts/about_codegen/provider_type/family_fn.dart +++ b/website/docs/concepts/about_codegen/provider_type/family_fn.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family_fn.g.dart'; diff --git a/website/docs/concepts/about_codegen/provider_type/sync_fn.dart b/website/docs/concepts/about_codegen/provider_type/sync_fn.dart index 0099d43b4..73e82b7e2 100644 --- a/website/docs/concepts/about_codegen/provider_type/sync_fn.dart +++ b/website/docs/concepts/about_codegen/provider_type/sync_fn.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'sync_fn.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/city_provider/codegen.dart b/website/docs/concepts/combining_provider_states/city_provider/codegen.dart index 39edaa161..092367038 100644 --- a/website/docs/concepts/combining_provider_states/city_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/city_provider/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart b/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart index 556d228c0..c76e47a97 100644 --- a/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/read_in_provider/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart b/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart index 1d76926cc..0bdb6db69 100644 --- a/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/select_async_provider/codegen.dart @@ -1,5 +1,4 @@ import 'package:dio/dio.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'models.dart'; diff --git a/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart b/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart index 0d04d544e..a66b91521 100644 --- a/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/weather_provider/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart b/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart index e52b9f54b..cb3a1ec73 100644 --- a/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart +++ b/website/docs/concepts/combining_provider_states/whole_object_provider/codegen.dart @@ -1,5 +1,4 @@ import 'package:dio/dio.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'models.dart'; diff --git a/website/docs/concepts/lifecycle_on_dispose/codegen.dart b/website/docs/concepts/lifecycle_on_dispose/codegen.dart index ab64f257e..35f832a69 100644 --- a/website/docs/concepts/lifecycle_on_dispose/codegen.dart +++ b/website/docs/concepts/lifecycle_on_dispose/codegen.dart @@ -2,7 +2,6 @@ import 'dart:async'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/providers/creating_a_provider/codegen.dart b/website/docs/concepts/providers/creating_a_provider/codegen.dart index 163f5b4b5..15efd2d7a 100644 --- a/website/docs/concepts/providers/creating_a_provider/codegen.dart +++ b/website/docs/concepts/providers/creating_a_provider/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/providers/declaring_many_providers/codegen.dart b/website/docs/concepts/providers/declaring_many_providers/codegen.dart index 17b1ccab8..276cab4dd 100644 --- a/website/docs/concepts/providers/declaring_many_providers/codegen.dart +++ b/website/docs/concepts/providers/declaring_many_providers/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/reading/listen/codegen.dart b/website/docs/concepts/reading/listen/codegen.dart index ac2cd9cae..b4531515a 100644 --- a/website/docs/concepts/reading/listen/codegen.dart +++ b/website/docs/concepts/reading/listen/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: omit_local_variable_types, avoid_types_on_closure_parameters, avoid_print -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../counter/codegen.dart'; diff --git a/website/docs/concepts/reading/provider/codegen.dart b/website/docs/concepts/reading/provider/codegen.dart index 46e832fe8..954941a9b 100644 --- a/website/docs/concepts/reading/provider/codegen.dart +++ b/website/docs/concepts/reading/provider/codegen.dart @@ -1,5 +1,4 @@ // ignore_for_file: avoid_positional_boolean_parameters -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/concepts/reading/watch/codegen.dart b/website/docs/concepts/reading/watch/codegen.dart index ebbaa8d7c..947af2a51 100644 --- a/website/docs/concepts/reading/watch/codegen.dart +++ b/website/docs/concepts/reading/watch/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: omit_local_variable_types, avoid_types_on_closure_parameters, avoid_print -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart b/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart index 69dad3871..a19f6a897 100644 --- a/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart +++ b/website/docs/essentials/auto_dispose/cache_for_usage/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/auto_dispose/codegen_keep_alive.dart b/website/docs/essentials/auto_dispose/codegen_keep_alive.dart index 48eba50c6..74af13186 100644 --- a/website/docs/essentials/auto_dispose/codegen_keep_alive.dart +++ b/website/docs/essentials/auto_dispose/codegen_keep_alive.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen_keep_alive.g.dart'; diff --git a/website/docs/essentials/auto_dispose/keep_alive/codegen.dart b/website/docs/essentials/auto_dispose/keep_alive/codegen.dart index 8d2afa235..a3f17cc7c 100644 --- a/website/docs/essentials/auto_dispose/keep_alive/codegen.dart +++ b/website/docs/essentials/auto_dispose/keep_alive/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart b/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart index d783c47fd..a7eafb658 100644 --- a/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart +++ b/website/docs/essentials/auto_dispose/on_dispose_example/codegen.dart @@ -2,7 +2,6 @@ import 'dart:async'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/functional_ref/codegen.dart b/website/docs/essentials/combining_requests/functional_ref/codegen.dart index 8f0ea7b7c..e776d8c31 100644 --- a/website/docs/essentials/combining_requests/functional_ref/codegen.dart +++ b/website/docs/essentials/combining_requests/functional_ref/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/listen_example/codegen.dart b/website/docs/essentials/combining_requests/listen_example/codegen.dart index dc8a14a77..8de5958a6 100644 --- a/website/docs/essentials/combining_requests/listen_example/codegen.dart +++ b/website/docs/essentials/combining_requests/listen_example/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable, avoid_print -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/notifier_ref/codegen.dart b/website/docs/essentials/combining_requests/notifier_ref/codegen.dart index 35609efa1..c184574c3 100644 --- a/website/docs/essentials/combining_requests/notifier_ref/codegen.dart +++ b/website/docs/essentials/combining_requests/notifier_ref/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_local_variable -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/combining_requests/watch_placement/codegen.dart b/website/docs/essentials/combining_requests/watch_placement/codegen.dart index e2ae6e347..d5a9cd653 100644 --- a/website/docs/essentials/combining_requests/watch_placement/codegen.dart +++ b/website/docs/essentials/combining_requests/watch_placement/codegen.dart @@ -1,7 +1,6 @@ // ignore_for_file: unused_local_variable import 'package:flutter/foundation.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/first_request/codegen/provider.dart b/website/docs/essentials/first_request/codegen/provider.dart index afaff3513..9a68b34be 100644 --- a/website/docs/essentials/first_request/codegen/provider.dart +++ b/website/docs/essentials/first_request/codegen/provider.dart @@ -1,7 +1,6 @@ /* SNIPPET START */ import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'activity.dart'; diff --git a/website/docs/essentials/passing_args/family/codegen.dart b/website/docs/essentials/passing_args/family/codegen.dart index 5c8a0117e..ab4743a20 100644 --- a/website/docs/essentials/passing_args/family/codegen.dart +++ b/website/docs/essentials/passing_args/family/codegen.dart @@ -1,7 +1,6 @@ // ignore_for_file: avoid_print import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../first_request/codegen/activity.dart'; diff --git a/website/docs/essentials/passing_args/no_arg_provider/codegen.dart b/website/docs/essentials/passing_args/no_arg_provider/codegen.dart index eee4a724c..da1c34adb 100644 --- a/website/docs/essentials/passing_args/no_arg_provider/codegen.dart +++ b/website/docs/essentials/passing_args/no_arg_provider/codegen.dart @@ -1,6 +1,5 @@ // ignore_for_file: avoid_print -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../first_request/codegen/activity.dart'; diff --git a/website/docs/essentials/side_effects/codegen/todo_list_provider.dart b/website/docs/essentials/side_effects/codegen/todo_list_provider.dart index e80b9d4a0..f0a84c83a 100644 --- a/website/docs/essentials/side_effects/codegen/todo_list_provider.dart +++ b/website/docs/essentials/side_effects/codegen/todo_list_provider.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/website/docs/essentials/testing/provider_to_mock/codegen.dart b/website/docs/essentials/testing/provider_to_mock/codegen.dart index 078148729..073779b2d 100644 --- a/website/docs/essentials/testing/provider_to_mock/codegen.dart +++ b/website/docs/essentials/testing/provider_to_mock/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/essentials/websockets_sync/pipe_change_notifier.dart b/website/docs/essentials/websockets_sync/pipe_change_notifier.dart index 03d665216..0cc75bea6 100644 --- a/website/docs/essentials/websockets_sync/pipe_change_notifier.dart +++ b/website/docs/essentials/websockets_sync/pipe_change_notifier.dart @@ -1,7 +1,6 @@ // ignore_for_file: omit_local_variable_types import 'package:flutter/widgets.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'pipe_change_notifier.g.dart'; diff --git a/website/docs/essentials/websockets_sync/sync_definition/codegen.dart b/website/docs/essentials/websockets_sync/sync_definition/codegen.dart index eeaba83b6..cdddcb32d 100644 --- a/website/docs/essentials/websockets_sync/sync_definition/codegen.dart +++ b/website/docs/essentials/websockets_sync/sync_definition/codegen.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/from_provider/family/family.dart b/website/docs/from_provider/family/family.dart index 88012fd24..61cf268fc 100644 --- a/website/docs/from_provider/family/family.dart +++ b/website/docs/from_provider/family/family.dart @@ -1,6 +1,5 @@ import 'dart:math'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'family.g.dart'; diff --git a/website/docs/from_provider/motivation/async_values/async_values.dart b/website/docs/from_provider/motivation/async_values/async_values.dart index 96f694e2a..0518dc0a7 100644 --- a/website/docs/from_provider/motivation/async_values/async_values.dart +++ b/website/docs/from_provider/motivation/async_values/async_values.dart @@ -1,6 +1,5 @@ import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../helpers/item.dart'; diff --git a/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart b/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart index fcb26dd6c..052686f61 100644 --- a/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart +++ b/website/docs/from_provider/motivation/auto_dispose/auto_dispose.dart @@ -1,6 +1,5 @@ import 'dart:math'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'auto_dispose.g.dart'; diff --git a/website/docs/from_provider/motivation/combine/combine.dart b/website/docs/from_provider/motivation/combine/combine.dart index f26e5d285..521d231b7 100644 --- a/website/docs/from_provider/motivation/combine/combine.dart +++ b/website/docs/from_provider/motivation/combine/combine.dart @@ -1,6 +1,5 @@ import 'dart:math'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'combine.g.dart'; diff --git a/website/docs/from_provider/motivation/same_type/same_type.dart b/website/docs/from_provider/motivation/same_type/same_type.dart index 1094a6950..a46db40cf 100644 --- a/website/docs/from_provider/motivation/same_type/same_type.dart +++ b/website/docs/from_provider/motivation/same_type/same_type.dart @@ -1,5 +1,4 @@ import 'package:collection/collection.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../helpers/item.dart'; diff --git a/website/docs/introduction/why_riverpod/codegen.dart b/website/docs/introduction/why_riverpod/codegen.dart index 5205e623c..bd784d449 100644 --- a/website/docs/introduction/why_riverpod/codegen.dart +++ b/website/docs/introduction/why_riverpod/codegen.dart @@ -1,7 +1,6 @@ // ignore_for_file: use_key_in_widget_constructors, omit_local_variable_types import 'package:dio/dio.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/providers/future_provider/config_provider/codegen.dart b/website/docs/providers/future_provider/config_provider/codegen.dart index f8520a4ec..e862b79f8 100644 --- a/website/docs/providers/future_provider/config_provider/codegen.dart +++ b/website/docs/providers/future_provider/config_provider/codegen.dart @@ -3,7 +3,6 @@ import 'dart:convert'; import 'package:flutter/services.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/docs/providers/provider/completed_todos/completed_todos.dart b/website/docs/providers/provider/completed_todos/completed_todos.dart index bc04a41b9..720a034ba 100644 --- a/website/docs/providers/provider/completed_todos/completed_todos.dart +++ b/website/docs/providers/provider/completed_todos/completed_todos.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../todo/todo.dart'; diff --git a/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart b/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart index d5247516f..6ac7b13c4 100644 --- a/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart +++ b/website/docs/providers/stream_provider/live_stream_chat_provider/codegen.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'dart:io'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'codegen.g.dart'; diff --git a/website/static/snippets/create.dart b/website/static/snippets/create.dart index 418e7430e..236716169 100644 --- a/website/static/snippets/create.dart +++ b/website/static/snippets/create.dart @@ -2,7 +2,6 @@ import 'dart:convert'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:riverpod_annotation/riverpod_annotation.dart'; From 965ef1376e4c12dc965dd69076df0097528810f7 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Tue, 19 Nov 2024 00:57:57 +0100 Subject: [PATCH 3/4] fix test --- .../test/widget_ref_invocation_test.dart | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart b/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart index 795d24e3c..1aab5b165 100644 --- a/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart +++ b/packages/riverpod_analyzer_utils_tests/test/widget_ref_invocation_test.dart @@ -6,19 +6,21 @@ import 'analyzer_test_utils.dart'; // ignore: invalid_use_of_internal_member extension on RiverpodAnalysisResult { List get widgetRefWatchInvocations { - return widgetRefInvocations.cast(); + return widgetRefInvocations.whereType().toList(); } List get widgetRefReadInvocations { - return widgetRefInvocations.cast(); + return widgetRefInvocations.whereType().toList(); } List get widgetRefListenInvocations { - return widgetRefInvocations.cast(); + return widgetRefInvocations.whereType().toList(); } List get widgetRefListenManualInvocations { - return widgetRefInvocations.cast(); + return widgetRefInvocations + .whereType() + .toList(); } } @@ -687,7 +689,7 @@ class MyWidget extends ConsumerWidget { ); expect(result.widgetRefWatchInvocations[0].function.toSource(), 'watch'); expect( - result.widgetRefWatchInvocations[0].listenable.provider?.node.toSource(), + result.widgetRefWatchInvocations[0].listenable.node.toSource(), 'family(ref.read(family2Provider(id: 0)))', ); expect( @@ -708,20 +710,20 @@ class MyWidget extends ConsumerWidget { // ref.watch(family2Provider(ref.watch(family(id: 0))); expect( - result.widgetRefWatchInvocations[1].node.toSource(), + result.widgetRefWatchInvocations[2].node.toSource(), 'ref.watch(family2Provider(ref.watch(family(id: 0))))', ); - expect(result.widgetRefWatchInvocations[1].function.toSource(), 'watch'); + expect(result.widgetRefWatchInvocations[2].function.toSource(), 'watch'); expect( - result.widgetRefWatchInvocations[1].listenable.provider?.node.toSource(), + result.widgetRefWatchInvocations[2].listenable.node.toSource(), 'family2Provider(ref.watch(family(id: 0)))', ); expect( - result.widgetRefWatchInvocations[1].listenable.provider?.node.toSource(), + result.widgetRefWatchInvocations[2].listenable.provider?.node.toSource(), 'family2Provider', ); expect( - result.widgetRefWatchInvocations[1].listenable.provider?.providerElement, + result.widgetRefWatchInvocations[2].listenable.provider?.providerElement, same( result.functionalProviderDeclarations .findByName('family2') @@ -729,7 +731,7 @@ class MyWidget extends ConsumerWidget { ), ); expect( - result.widgetRefWatchInvocations[1].listenable.familyArguments + result.widgetRefWatchInvocations[2].listenable.familyArguments ?.toSource(), '(ref.watch(family(id: 0)))', ); From ecb52b32be9c7295c97d96bf899e8ec390d2d04b Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Tue, 19 Nov 2024 01:13:38 +0100 Subject: [PATCH 4/4] goldens --- .../convert_functional_provider_to_class_based.diff | 4 ++-- .../avoid_build_context_in_providers_lint.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff b/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff index 729b5335f..0980c5b6b 100644 --- a/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff +++ b/packages/riverpod_lint_flutter_test/test/assists/goldens/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.diff @@ -1,6 +1,6 @@ Message: `Convert to class-based provider` Priority: 100 -Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:8`: +Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:7`: ``` /// Some comment @riverpod @@ -15,7 +15,7 @@ Diff for file `test/assists/convert_functional_provider_to_class_based/convert_f --- Message: `Convert to class-based provider` Priority: 100 -Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:12`: +Diff for file `test/assists/convert_functional_provider_to_class_based/convert_functional_provider_to_class_based.dart:11`: ``` /// Some comment @riverpod diff --git a/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md b/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md index 36544c25b..589c4dde1 100644 --- a/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md +++ b/packages/riverpod_lint_flutter_test/test/lints/goldens/avoid_build_context_in_providers/avoid_build_context_in_providers_lint.md @@ -1,7 +1,7 @@ code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:13:3 +test/lints/avoid_build_context_in_providers.dart:12:3 ```dart Ref ref, @@ -16,7 +16,7 @@ test/lints/avoid_build_context_in_providers.dart:13:3 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:15:3 +test/lints/avoid_build_context_in_providers.dart:14:3 ```dart BuildContext context1, { @@ -31,7 +31,7 @@ test/lints/avoid_build_context_in_providers.dart:15:3 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:23:5 +test/lints/avoid_build_context_in_providers.dart:22:5 ```dart int build( @@ -46,7 +46,7 @@ test/lints/avoid_build_context_in_providers.dart:23:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:25:5 +test/lints/avoid_build_context_in_providers.dart:24:5 ```dart BuildContext context1, { @@ -61,7 +61,7 @@ test/lints/avoid_build_context_in_providers.dart:25:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:31:5 +test/lints/avoid_build_context_in_providers.dart:30:5 ```dart void event( @@ -76,7 +76,7 @@ test/lints/avoid_build_context_in_providers.dart:31:5 code: avoid_build_context_in_providers severity: Severity.info message: Passing BuildContext to providers indicates mixing UI with the business logic. -test/lints/avoid_build_context_in_providers.dart:33:5 +test/lints/avoid_build_context_in_providers.dart:32:5 ```dart BuildContext context3, {