Track progress across sessions. Check off items as they are completed. Current Flutter: 3.41.6 | Dart: 3.11.4 | Package version: 3.2.0
- 1.1 Bumped
flutter_lints^2.0.1→^6.0.0in main package - 1.2 Example app: replaced
pedantic ^1.11.1(discontinued) withflutter_lints ^6.0.0, removed unusedintegration_testdep, bumpedcupertino_icons ^1.0.4→^1.0.8 - 1.3 Updated flutter SDK lower bound
">=0.2.5"→">=3.10.0"in both pubspec files (Flutter 3.10 is where Dart 3.0 landed) - 1.4 Ran
flutter pub upgrade; lockfiles are gitignored so not committed - Fixed 3
use_super_parameterslint warnings introduced by the new lint rules (Badge,BadgePositioned,TestWidgetScreen)
-
2.1 Issue #114 —
showBadgeignored when fade loop animation is active- Restructured
didUpdateWidgetsoshowBadgechanges are handled before any loop-animation guards. The early-return that blocked_appearanceController.reverse()is gone.
- Restructured
-
2.2 Issue #130 —
showBadgeis slow to respond when animation is on_animationController.stop()+_appearanceController.stop()are now called beforereverse()whenshowBadgeflips to false, so hiding is immediate.
-
2.3 Issue #98 — Border anti-aliasing artifact (thin inner border visible)
- Border moved from
Material.shapeintoBoxDecorationwithstrokeAlign: BorderSide.strokeAlignInside. Material shape usesCircleBorder()/RoundedRectangleBorder()with no side (elevation shadow only).gradientBorder→boxBordertyped asBoxBorder?.
- Border moved from
-
2.4 Issue #115 — Animation not working (general)
- Added key-based re-trigger: if
badgeContenthas aKeyand it changes, the animation restarts. Handles all widget types beyondTextandIcon.
- Added key-based re-trigger: if
-
3.1 PR #122 — Fix for issue #114 (showBadge + loop fade)
- Our Phase 2.1 fix supersedes this PR. Cleaner restructuring of
didUpdateWidget.
- Our Phase 2.1 fix supersedes this PR. Cleaner restructuring of
-
3.2 PR #120 — Replace private helper methods with private widgets
- Extracted
badgeView()inner closure into_BadgeVisualStatelessWidgetinbadge.dart. Flutter's element tree now caches it across appearance controller ticks.
- Extracted
-
3.3 PR #128 — Expose
animationControllerandappearanceController- Added public getters
animationControllerandappearanceControllertoBadgeState.
- Added public getters
-
3.4 PR #111 — Fix display of square badge with small content size
- Wrapped badge content in
ConstrainedBox+IntrinsicWidthinside_BadgeVisualso single-character / small-icon badges stay proportional.
- Wrapped badge content in
-
4.1 Fixed all 16 lint warnings in
example/use_super_parametersin alarm_app, flag_app, human_avatar, instagram_message, instagram_verified_account, twitter_verified_account, yako_app, test_screenprefer_final_fieldsin alarm_app (_isLooped)deprecated_member_use(withOpacity→withValues) in instagram_verified_accountuse_key_in_widget_constructors+library_private_types_in_public_apiin main.dartcurly_braces_in_flow_control_structuresin test_screen.dartavoid_printin yako_app.dart (removed print)
-
4.2 Replaced
badgeView()helper method with_BadgeVisualwidget class — covered by 3.2 -
4.3 Audited
didUpdateWidget— fully restructured with clear priority ordering; covered by 2.1 -
4.4 Controller getters — covered by 3.3 (public
animationController+appearanceControllergetters onBadgeState) -
4.5
BadgePosition— addedcenterStartandcenterEndnamed constructors -
4.6
BadgeStyle.copyWith— addedcopyWithmethod covering all 8 fields -
4.7
BadgeGradient.gradient()asserts — addedassertstatements in eachswitchcase documenting constructor invariants instead of silently force-unwrapping
- 5.1 Fixed all 16 lint issues in
example/— see 4.1 above - 5.2 Example app builds cleanly with no analyzer warnings
175 tests passing, 0 skipped.
Changes made:
- Rewrote
content_change_badge_animation_tests.dart: removed illegal direct calls tostate.didUpdateWidget()— tests now useTestWidgetScreenwithsetStateso the framework callsdidUpdateWidgetnaturally. - Fixed
show_hide_badge_animation_tests.dart: renamed duplicate test name. - Cleaned
utils_tests.dart: removed unnecessaryasynckeyword from unit tests. - Added new test groups to
badges_test.dart:Badge without childshowBadge false at initial renderBadgePosition factory defaultsIcon content change triggers animationNon-Text/non-Icon content change does not re-trigger animationIssue #114 regression— now passing (was previously skipped)
- Removed
skip: truefrom the issue #114 regression test after Phase 2 fix.
- 7.1 Fixed README main GIF height:
600px→400px - 7.2 Added
hide Badgeimport pattern (Option 2) to README - 7.3 Bumped version:
3.1.2→3.2.0inpubspec.yamland README - 7.4 Updated
CHANGELOG.mdwith all changes for 3.2.0
- 8.1 Version bump:
3.2.0(new features:copyWith, new positions, controller getters, key-based animation trigger,_BadgeVisualwidget, min-square sizing) - 8.2 All 175 tests passing
- 8.3
flutter analyze lib/ test/ example/— 0 issues - 8.4
dart format .— all files formatted - 8.5 Publish:
flutter pub publish— intentionally skipped per task instructions
| Date | Decision |
|---|---|
| 2026-04-09 | PR #122 superseded by cleaner Phase 2.1 restructure of didUpdateWidget |
| 2026-04-09 | PR #111 triangle shape deferred; only size-fix implemented |
| 2026-04-09 | BadgeController abstraction (issue #127 / PR #128) deferred; raw controller getters added as simpler API |
| 2026-04-09 | copyWith added to BadgeStyle only (not BadgeAnimation / BadgePosition — lower demand) |