NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
A flutter package, including components, implementations, helper functions and extensions. Designed to provide a simple way to develop with flutter.
Last release 1 years ago
28 May 2025
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 38 of 38 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
38 releases · first in 2024
> 2025.05.28 FIX: - BadPopup: log condition ...
2025.05.28
FIX:
BadPopup: log condition ...BadPopup: correct lifecycle handlers and add some log info.
2025.05.28
FIX:
BadPopup: correct lifecycle handlers and add some log info.SearchKitMixin: remove protected decorator on unsafeMutate.
One column per month.
2025.04.09
FIX:
SearchKitMixin: remove protected decorator on unsafeMutate.SearchKitMixin: add unsafeMutate for custom mutation.
2025.04.08
FEAT:
SearchKitMixin: add unsafeMutate for custom mutation.REFACTOR:
SearchKitMixin: make searchTarget generic for more flexible usage.BadButtonAsync: remove unnecessary required for height.
2025.04.07
FIX:
BadButtonAsync: remove unnecessary required for height.ScrollControllerExt: clampInExtent.
2025.04.07
ADD:
ScrollControllerExt: clampInExtent.BadSwitchAsync: a switch update its state or do nothing according to result of task.
2025.04.01
ADD:
BadSwitchAsync: a switch update its state or do nothing according to result of task.replace centered with alignment.
2025.04.01
REFACTOR:
BadButton:
centered with alignment.tight with mainAxisSize.SearchKitMixin: state machine transform error (from Loading to Idle)
2025.03.21
FIX:
SearchKitMixin: state machine transform error (from Loading to Idle)SearchKitMixin: add EndStrategy to enable different END checker.
2025.03.21
FEAT:
SearchKitMixin: add EndStrategy to enable different END checker.IterableExt.separate: add groupSize for grouping.
2025.03.12
FEAT:
IterableExt.separate: add groupSize for grouping.BadInputXXX: add enabled field.
2025.03.05
FEAT:
BadInputXXX: add enabled field.BadButton: BadButton.two variant can be tight.
2025.03.04
FEAT:
BadButton: BadButton.two variant can be tight.BadButton: add the centered property to determine whether alignment: Alignment.center is needed.
2025.03.03
FEAT:
BadButton: add the centered property to determine whether alignment: Alignment.center is needed.BadButton: remove unnecessary required for height.
2025.03.02
ADD:
SetExt: toggle.FIX:
BadButton: remove unnecessary required for height.BadSpinner: a wrapper that infinitely spin its child.
2025.02.27
ADD:
ImageIOImpl: re-export XFile.BadSpinner: a wrapper that infinitely spin its child.BadButton: rename BadButton.lr to BadButton.two.
2025.02.24
BREAKING CHANGE:
BadButton: rename BadButton.lr to BadButton.two.BadSkeleton: type check with 0 and 0.0.
2025.02.20
FIX:
BadSkeleton: type check with 0 and 0.0.BadSkeleton: skeleton block with shimmer effect.
2025.02.20
ADD:
BadSkeleton: skeleton block with shimmer effect.BadButton: add lr variant for two-child-row layout usage.
2025.02.20
ADD:
BadButton: add lr variant for two-child-row layout usage.BadButtonAsync: a button automatically switch child widget according to its state (idle or pending).
2025.02.14
ADD:
BadButtonAsync: a button automatically switch child widget according to its state (idle or pending).BREAKING CHANGE:
BadTree: re-implement this widget. (now state can be cached in TreeController).KVStorageImpl: add clear for clear all items in k-v storage.
2025.02.14
ADD:
KVStorageImpl: add clear for clear all items in k-v storage.BREAKING CHANGE:
KVStorageImpl: remove directory and boxName in prelude, use fixed names instead.AppMetaImpl: split prelude to prelude and preludeAfterAgreed.> 2025.02.13 FIX: - KVStorageImpl: type case.
2025.02.13
FIX:
KVStorageImpl: type case.BadInputController: drop type check.
2025.02.12
FIX:
BadInputController: drop type check.> 2025.02.12 FIX: - BadPopup: some typo thing.
2025.02.12
FIX:
BadPopup: some typo thing.BadPopup: re-implement this widget.
2025.02.12
REFACTOR:
BadPopup: re-implement this widget.BadNamedStack: manage layers by name rather than index.
2025.02.10
ADD:
BadNamedStack: manage layers by name rather than index.SSERawTransformer & SSEEventTransformer: StreamTransformer for sse stream.REFACTOR:
SnapshotScope to BadCapture, add captureAsPngBytes for more convenient use.Result (incorrect 'isOk' in Result.err).
2025.01.16
FIX:
Result (re-implement it due to weak inference of generics in dart).
2025.01.15
REFACTOR:
> 2025.01.15 FIX: - Result: implementation.
2025.01.15
FIX:
KVStorageImpl.prelude (make it static).
2025.01.07
FIX:
> 2024.12.30 ADD: - BadTree widget.
2024.12.30
ADD:
> 2024.12.23
2024.12.23
The project structure is about to change. This version is available for use in existing projects
2024.11.05
Reorganized the entire project and renamed most of the classes (prefixed with bad).
Reorganized the entire project and renamed most of the classes (prefixed with bad).
import 'package:bad_fl/bad_fl.dart'0CacheImpl: renamed to FileCacheImpl
BREAKING CHANGE:
BadWebviewFragment:
BadWebviewprefab collectionCacheImpl: renamed to FileCacheImpl
CacheImpl.remove: renamed to FileCacheImpl.deleteNEW FEATURES:
BadBackToTop: Implement the back-to-top logic (show and hide, scroll to the top) according to the
passed ScrollControllerBadFloating: A wrapper that allows the components inside it to be dragged and placed anywhere on the screenBadScrollAnchorScope: A wrapper on top of SingleChildScrollView, allowing its child elements to act as anchors (be
used as scroll target, listen to its show/hide state changes)BadSignature: A canvas component that can be used to make simple signaturesBadSnapshot: A wrapper for capturing snapshot of its child widgetBadTextInput, BadTextField: Only dispose the internally maintained TextEditingController to avoid multiple dispose
BUG FIXES:
BadTextInput, BadTextField: Only dispose the internally maintained TextEditingController to avoid multiple
disposeDOCS:
OPTIMIZE:
BadOTPInput, BadPasswordInput: remove unnecessary controllerInitial version, created by lopo
Your coding agent can read these notes before it upgrades. Set up the MCP server →