Release v10.1.0
This release focuses on Flutter SDK alignment (new migration lints and a shared identifier→element helper) and on the VS Code extension: Package Vibrancy now uses a single trusted publishers list so first-party and Google-published packages are not mislabeled Quiet when GitHub-activity scoring sits in the mid tier.
Added
-
prefer_dropdown_menu_item_button_opacity_animation(Recommended, INFO) — Flutter 3.32 (PR #164795) typesopacityAnimationonDropdownMenuItemButtonstate as non-null (late CurvedAnimation). The rule flags nullableCurvedAnimation? opacityAnimationfields and redundantopacityAnimation!when resolved types showState<DropdownMenuItemButton<…>>or aDropdownMenuItemButtonreceiver. Quick fixes: remove!(RemoveNullAssertionFix) and rewrite the field tolate CurvedAnimation(prefer_dropdown_menu_item_button_opacity_animation_field_fix.dart). Fixture:example/lib/migration/prefer_dropdown_menu_item_button_opacity_animation_fixture.dart; mock:DropdownMenuItemButtoninexample/lib/flutter_mocks.dart. -
prefer_image_filter_quality_medium(Comprehensive, INFO) — FlagsfilterQuality: FilterQuality.lowon Flutter SDKImage/RawImage/FadeInImage/DecorationImageso apps align with Flutter 3.24 image defaults (PR #148799). Quick fix rewriteslow→medium(preserves enum prefix). Does not apply toTexture. Detection:lib/src/rules/widget/image_filter_quality_detection.dart; rule:lib/src/rules/widget/image_filter_quality_migration_rules.dart. -
avoid_deprecated_flutter_test_window(Recommended, WARNING) — Flagspackage:flutter_testTestWindow and TestWidgetsFlutterBinding.window, deprecated in Flutter 3.10 (PR #122824); migrate toWidgetTester.platformDispatcherandWidgetTester.view/viewOf. Detection uses resolved elements only. Shared predicates:lib/src/rules/config/flutter_test_window_deprecation_utils.dart(unit-tested URI boundary);example/analysis_options_template.yamllists the override.
Changed
-
Package Vibrancy (VS Code extension) — Introduces
extension/src/vibrancy/scoring/trusted-publishers.ts:TRUSTED_PUBLISHERS(dart.dev,google.dev,flutter.dev,firebase.google.com) andisTrustedPublisher(). The same set controls (1) thepublisherTrustBonusscoring bonus and (2) promoting Quiet → Vibrant when the raw score is in the mid band but the dependency is from a trusted publisher—so pubspec CodeLens and reports match maintainer intent. EOL still wins: discontinued packages, known end-of-life entries, and archived GitHub repos are unchanged; publisher IDs are matched case-sensitively (as on pub.dev).saropaLints.packageVibrancy.publisherTrustBonussetting description updated to describe the trusted list. Tests:npm testrunsvibrancy-calculator.test.ts(trust bonus for every trusted ID) and extendedstatus-classifier.test.ts(trusted upgrade, non-trusted quiet, wrong-case publisher, EOL overrides). -
Analyzer identifier → element — Shared
elementFromAstIdentifierinlib/src/element_identifier_utils.darttries.elementthen.staticElementwith optionallogFailures. Used byimage_filter_quality_detectionand deprecated-API checks incode_quality_avoid_rules.dart. Documented in CODE_INDEX.md. Tests:test/element_identifier_utils_test.dart.