liquid_flutter 23.0.0-13
liquid_flutter: ^23.0.0-13 copied to clipboard
Liquid Oxygen Components for Flutter
23.0.0-13 #
Released on: 8/22/2026, changelog automatically generated.
Bug Fixes #
- LdTabNavigation: restore indicator drag without blocking tab taps (e114b12)
- LdToolAllowRule: match absent nested objects pinned to Any (1d24ad1)
- LdInput: use regular weight for field text (55e73bc)
- LdInput: restore label style for compact control height (ceeee8b)
Features #
23.0.0-12 #
Released on: 8/18/2026, changelog automatically generated.
Bug Fixes #
- LdToolAllowRule: allow wildcard to match absent args (#152) (2e29138)
- LdAppBar: remove leftover debug print statements in _buildScrim (05bfb2b)
- restore tap-through on LdTabNavigation indicator and fix LdDrawerLayout dispose crash (4ba13c6)
Features #
- LdSubmit: allow scoping exception localization via onException (b5870b2)
API Changes #
💣 Breaking changes
class AppBarFrame (lib/src/appbar/appbar_frame.dart)
- 🔄 Param type changed in default constructor:
scrimColor(Color?→Color? Function(bool)?) - ❌ Property removed:
insetBorderRadius - 🔄 Property type changed:
scrimColor
class LdAppBar (lib/src/appbar/appbar.dart)
- ❌ Property removed:
insetScreenRadius
class LdAppBarConfig (lib/src/appbar/appbar.dart)
- ❌ Property removed:
insetScreenRadius
class LdAppBarWidget (lib/src/appbar/appbar.dart)
- ❌ Property removed:
insetScreenRadius
class _LdCounterDigit (lib/src/counter.dart)
- ❇️ Param added in default constructor:
ascending(named, required)
✨ Minor changes
class AppBarFrame (lib/src/appbar/appbar_frame.dart)
- ❌ Param removed in default constructor:
insetBorderRadius(named, optional, default: true) - ❇️ Param added in default constructor:
useAdaptiveRadius(named, optional, default: true) - ❇️ Property added:
useAdaptiveRadius
class LdAppBar (lib/src/appbar/appbar.dart)
- ❌ Param removed in default constructor:
insetScreenRadius(named, optional) - ❇️ Param added in default constructor:
useAdaptiveRadius(named, optional) - ❌ Param removed in constructor
top:insetScreenRadius(named, optional) - ❇️ Param added in constructor
top:useAdaptiveRadius(named, optional) - ❌ Param removed in constructor
bottom:insetScreenRadius(named, optional) - ❇️ Param added in constructor
bottom:useAdaptiveRadius(named, optional) - ❇️ Property added:
useAdaptiveRadius
class LdAppBarConfig (lib/src/appbar/appbar.dart)
- ❌ Param removed in default constructor:
insetScreenRadius(named, optional) - ❇️ Param added in default constructor:
useAdaptiveRadius(named, optional) - ❇️ Property added:
useAdaptiveRadius - ❌ Param removed in method
copyWith:insetScreenRadius(named, optional) - ❇️ Param added in method
copyWith:useAdaptiveRadius(named, optional)
class LdAppBarWidget (lib/src/appbar/appbar.dart)
- ❌ Param removed in default constructor:
insetScreenRadius(named, optional, default: true) - ❇️ Param added in default constructor:
useAdaptiveRadius(named, optional, default: true) - ❇️ Property added:
useAdaptiveRadius
class LdCounter (lib/src/counter.dart)
- ❇️ Params added in default constructor:
size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.headline) - ❇️ Properties added:
size,type
class LdCounterDuration (lib/src/counter.dart)
- ❇️ Class added:
LdCounterDuration
class LdInput (lib/src/input.dart)
- ❇️ Params added in default constructor:
style(named, optional),borderRadius(named, optional) - ❇️ Properties added:
style,borderRadius
extension LdModalRouteExtension (lib/src/modal/modal.dart)
- ❇️ Property added:
isInSheet
class LdModalRouteInfo (lib/src/modal/modal.dart)
- ❇️ Class added:
LdModalRouteInfo
class LdSubmit<T, Arg> (lib/src/submit/submit.dart)
- ❇️ Param added in default constructor:
onException(named, optional) - ❇️ Property added:
onException
👀 Patch changes
class _AppBarFrameState (lib/src/appbar/appbar_frame.dart)
- ❌ Method removed:
_screenRelativeBorderRadius - ❇️ Param added in method
_insidePadding:outsideRadius(positional, required) - ❌ Param removed in method
_buildScrim:scrimColor(positional, required) - ❇️ Param added in method
_buildScrim:isScrolledUnder(positional, required) - ❇️ Method added:
_adaptiveBorderRadius
class _ButtonShape (lib/src/button.dart)
- ❇️ Method added:
_circularSizeBump
class _DigitSlot (lib/src/counter.dart)
- ❇️ Class added:
_DigitSlot
class _LdCounterDigit (lib/src/counter.dart)
- ❇️ Property added:
ascending
class _LdCounterDigitState (lib/src/counter.dart)
- ❌ Properties removed:
_textWidths,chars - ❇️ Properties added:
_current,_outgoing,_incoming,_springKey - ❌ Methods removed:
calculateTextWidth,_digitHeight,_generateTextWidths,_buildDigitColumn,_buildInlineDigit,_buildStandaloneDigit - ❇️ Methods added:
_startTransition,_onRollEnd,_textWidth,_buildRollingContent,_buildSettledContent,_wrapInline
class _LdCounterState (lib/src/counter.dart)
- 🔄 Property type changed:
_digits - ❇️ Properties added:
_ascending,_nextId,_initialized - ❇️ Method added:
_removeSlot
class _LdMultiPanelLayoutState (lib/src/multi_panel/multi_panel_layout.dart)
- 🔄 Property type changed:
_bodyDecoration - ❌ Property removed:
_bodyMargin
function _isRollableDigit (lib/src/counter.dart)
- ❇️ Function added:
_isRollableDigit
23.0.0-11 #
23.0.0-10 #
23.0.0-9 #
Released on: 8/6/2026, changelog automatically generated.
Bug Fixes #
- LdSubmitController: ignore stale results after cancel/retry (58919d2)
- use normal draggable on desktop since we can disambiguate touchables better now (4bb2af9)
- spacing for headlines and dividers reduced (b3512b9)
- request focus for all touchables on tap (086ee90)
- ensure proper focus traversal in multi panel (54d974c)
- modal centering correctly in multi panel (4283b22)
- update disabledAlpha value for shadRed color token (6018e7f)
- disallow trackpad swipe on multi-panel (5f36680)
- change default appbar behaviour (6f43fed)
- emoji optical centering (f1e6778)
- dismissal (5e20b90)
- tooltip on sliders, extract date_picker to be imperatively called (bddcb40)
- ci: unblock analyze and tests on Flutter 3.44.8 (4c1b5a5)
Features #
- metaball: add ForceDemo to showcase varying force multipliers for metaballs (cd6603e)
- ld_runner_step: add customizable left padding for expanded children block (3e44c13)
- LdNavigationRail: add width-responsive rail from shared LdNavigationTab (7bf2878)
- add labels to sliders (c523a78)
- enhance LdInput and LdButton components with new features and improvements (a8c526f)
- add swagger identifiable mixin processing (351176d)
- add hashtag support to markdown editor/widget, rename enabled->disabled (a4a7ff8)
API Changes #
💣 Breaking changes
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- 🔄 Type parameters changed:
T extends Identifiable<IdType>, IdType→T extends Identifiable<IdType>, IdType, TCreate, TUpdate - 🔄 Param type changed in default constructor:
updateItem(Future<T?> Function(BuildContext, IdType, T)?→Future<T?> Function(BuildContext, IdType, TUpdate)?),createItem(Future<T> Function(BuildContext, T?)?→Future<T> Function(BuildContext, TCreate)?),updateBatchFn(Future<void> Function(BuildContext, Map<IdType, T>)?→Future<void> Function(BuildContext, Map<IdType, TUpdate>)?) - 🔄 Properties type changed:
updateItem,createItem,updateBatchFn - 🔄 Param type changed in method
persistCreate:payload(T?→TCreate) - 🔄 Param type changed in method
persistUpdate:payload(T→TUpdate) - 🔄 Param type changed in method
persistUpdateBatch:items(Map<IdType, T>→Map<IdType, TUpdate>) - 🔄 Param type changed in method
createPreview:payload(T?→TCreate) - 🔄 Param type changed in method
create:payload(T?→TCreate) - 🔄 Param type changed in method
update:payload(T→TUpdate) - 🔄 Param type changed in method
updateBatch:items(Map<IdType, T>→Map<IdType, TUpdate>) - 🔄 Method type changed:
greedy(LdCallbackModel<L, IdType>→LdCallbackModel<L, IdType, TCreate, TUpdate>),fromList(LdCallbackModel<L, IdType>→LdCallbackModel<L, IdType, L, L>) - 🔄 Type parameters changed:
L extends Identifiable<IdType>, IdType→L extends Identifiable<IdType>, IdType, TCreate, TUpdate - 🔄 Param type changed in method
greedy:updateItem(Future<L?> Function(BuildContext, IdType, L)?→Future<L?> Function(BuildContext, IdType, TUpdate)?),createItem(Future<L> Function(BuildContext, L?)?→Future<L> Function(BuildContext, TCreate)?),updateBatch(Future<void> Function(BuildContext, Map<IdType, L>)?→Future<void> Function(BuildContext, Map<IdType, TUpdate>)?)
class LdCounter (lib/src/counter.dart)
- 🔄 Superclass changed:
StatelessWidget→StatefulWidget - ❌ Constructors removed:
s,l,xs - ❌ Properties removed:
size,type - ❌ Method removed:
build
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- ❌ Param removed in method
reorder:reorderHandler(named, required) - ❇️ Param added in method
reorder:activeSortOption(named, required)
class LdMonkeyAppBar<T extends Identifiable (lib/src/monkey/monkey_app_bar.dart)
- ❌ Property removed:
additionalActions
class LdMonkeyDetailPage<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❌ Class removed:
LdMonkeyDetailPage
class LdMonkeyMasterPage<T extends Identifiable (lib/src/monkey/monkey_master_page.dart)
- ❌ Properties removed:
primaryAppBarConfig,secondaryAppBarConfig,primaryAppBarAdditionalActions
typedef LdMonkeyReorderHandler<T extends Identifiable (lib/src/monkey/ld_monkey_route_definitions.dart)
- ❌ Typedef removed:
LdMonkeyReorderHandler
class LdMonkeyRouteScope<T extends Identifiable (lib/src/monkey/monkey_route_scope.dart)
- ❌ Property removed:
reorderHandler
class LdMonkeyScrollableDetailView<T extends Identifiable (lib/src/monkey/monkey_scrollable_detail_view.dart)
- ❌ Class removed:
LdMonkeyScrollableDetailView
class LdMonkeyStackDetailView<T extends Identifiable (lib/src/monkey/monkey_stack_detail_view.dart)
- ❌ Class removed:
LdMonkeyStackDetailView
class LdMonkeyStreamSelection<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❌ Class removed:
LdMonkeyStreamSelection
class MonkeyRouteNode<T extends Identifiable (lib/src/monkey/monkey_route_tree.dart)
- ❌ Property removed:
reorderHandler
class _LdCounterDigit (lib/src/counter.dart)
- ❌ Params removed in default constructor:
size(named, required),type(named, required) - ❇️ Param added in default constructor:
style(named, required)
class _LdCounterState (lib/src/counter.dart)
- 🔄 Param type changed in method
didUpdateWidget:oldWidget(_LdCounterWidget→LdCounter)
class _LdMonkeyViewingItemLoader<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❌ Params removed in default constructor:
id(named, required),buildItem(named, required) - ❇️ Params added in default constructor:
ids(named, required),builder(named, required)
class _LdSliderHandle (lib/src/value_slider.dart)
- ❌ Param removed in default constructor:
tooltipKey(named, required) - ❇️ Param added in default constructor:
showTooltip(named, required)
function ldConfirmModal (lib/src/modal/utils.dart)
- 🔄 Function type changed:
ldConfirmModal(Future<bool>→Future<bool?>)
function ldFormConfirmDiscardEdits (lib/src/monkey/detail_editor/ld_monkey_discard_confirm.dart)
- 🔄 Function type changed:
ldFormConfirmDiscardEdits(Future<bool>→Future<bool?>)
✨ Minor changes
class AppBarFrame (lib/src/appbar/appbar_frame.dart)
- ❇️ Class added:
AppBarFrame
extension DoubleToEdgeInsets (lib/src/appbar/appbar_frame.dart)
- ❇️ Extension added:
DoubleToEdgeInsets
class LdAppBar (lib/src/appbar/appbar.dart)
- ❇️ Constructor added:
fromConfig
class LdAppBarConfig (lib/src/appbar/appbar.dart)
- ❇️ Methods added:
copyWith,merge
extension LdAppBarScrollBehaviorExtension (lib/src/scaffold.dart)
- ❇️ Extension added:
LdAppBarScrollBehaviorExtension
class LdAvatar (lib/src/avatar.dart)
- ❇️ Constructor added:
fromConfig
class LdAvatarConfig (lib/src/avatar.dart)
- ❇️ Methods added:
copyWith,merge
class LdButton (lib/src/button.dart)
- ❇️ Constructor added:
fromConfig
class LdButtonConfig (lib/src/button.dart)
- ❇️ Methods added:
copyWith,merge
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- ❇️ Param added in default constructor:
reorderItem(named, optional) - ❇️ Properties added:
supportsReorder,reorderItem - ❇️ Param added in method
greedy:reorderItem(named, optional) - ❇️ Method added:
persistReorder
class LdCheckbox (lib/src/checkbox.dart)
- ❇️ Constructor added:
fromConfig
class LdCheckboxConfig (lib/src/checkbox.dart)
- ❇️ Methods added:
copyWith,merge
class LdCounter (lib/src/counter.dart)
- ❌ Params removed in default constructor:
size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.headline) - ❇️ Param added in default constructor:
style(named, optional) - ❇️ Property added:
style - ❇️ Method added:
createState
class LdDatePickerModal (lib/src/date_picker.dart)
- ❇️ Class added:
LdDatePickerModal
class LdInput (lib/src/input.dart)
- ❇️ Param added in default constructor:
padding(named, optional) - ❇️ Property added:
padding
class LdList<T extends Identifiable (lib/src/list/list.dart)
- ❇️ Constructor added:
fromConfig
class LdListConfig<T extends Identifiable (lib/src/list/list.dart)
- ❇️ Methods added:
copyWith,merge
class LdListItem (lib/src/list/list_item.dart)
- ❇️ Constructor added:
fromConfig
class LdListItemConfig (lib/src/list/list_item.dart)
- ❇️ Methods added:
copyWith,merge
class LdMetaball (lib/src/metaball/metaball.dart)
- ❇️ Param added in default constructor:
force(named, optional, default: 1.0) - ❇️ Property added:
force
class LdMetaballBlob (lib/src/metaball/metaball_blob.dart)
- ❇️ Param added in default constructor:
force(named, optional, default: 1.0) - ❇️ Property added:
force - ❇️ Param added in method
copyWith:force(named, optional)
class LdModel<T extends Identifiable (lib/src/monkey/data/ld_model.dart)
- ❇️ Property added:
supportsReorder - ❇️ Method added:
persistReorder
class LdMonkeyAppBar<T extends Identifiable (lib/src/monkey/monkey_app_bar.dart)
- ❌ Param removed in default constructor:
additionalActions(named, optional, default: const []) - ❇️ Param added in default constructor:
config(named, optional) - ❇️ Property added:
config
class LdMonkeyAppbarConfig (lib/src/monkey/monkey_app_bar.dart)
- ❇️ Class added:
LdMonkeyAppbarConfig
class LdMonkeyDetailAppBars<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❇️ Class added:
LdMonkeyDetailAppBars
class LdMonkeyDetailAppbarConfig (lib/src/monkey/monkey_app_bar.dart)
- ❇️ Class added:
LdMonkeyDetailAppbarConfig
class LdMonkeyDetailSecondaryAppbarConfig (lib/src/monkey/monkey_app_bar.dart)
- ❇️ Class added:
LdMonkeyDetailSecondaryAppbarConfig
class LdMonkeyMasterAppbarConfig (lib/src/monkey/monkey_app_bar.dart)
- ❇️ Class added:
LdMonkeyMasterAppbarConfig
class LdMonkeyMasterPage<T extends Identifiable (lib/src/monkey/monkey_master_page.dart)
- ❌ Params removed in default constructor:
primaryAppBarConfig(named, optional),primaryAppBarAdditionalActions(named, optional, default: const []),secondaryAppBarConfig(named, optional)
class LdMonkeyMasterSecondaryAppbarConfig (lib/src/monkey/monkey_app_bar.dart)
- ❇️ Class added:
LdMonkeyMasterSecondaryAppbarConfig
class LdMonkeyRouteScope<T extends Identifiable (lib/src/monkey/monkey_route_scope.dart)
- ❌ Param removed in default constructor:
reorderHandler(named, optional)
class LdMonkeyScrollableDetailPage<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❇️ Class added:
LdMonkeyScrollableDetailPage
class LdMonkeySingleDetailPage<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❇️ Class added:
LdMonkeySingleDetailPage
class LdMonkeyViewingBuilder<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❇️ Class added:
LdMonkeyViewingBuilder
class LdNavigationRail (lib/src/drawer/navigation_rail.dart)
- ❇️ Class added:
LdNavigationRail
class LdNavigationTab (lib/src/appbar/tab_navigation.dart)
- ❇️ Method added:
matches
typedef LdReorderItemCallback<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- ❇️ Typedef added:
LdReorderItemCallback
class LdRunnerStep (lib/src/runner.dart)
- ❇️ Param added in default constructor:
childrenLeftPadding(named, optional, default: 32) - ❇️ Property added:
childrenLeftPadding
class LdScaffold (lib/src/scaffold.dart)
- ❇️ Param added in default constructor:
drawerMinWidth(named, optional, default: 200) - ❇️ Property added:
drawerMinWidth
class LdScaffoldBody (lib/src/scaffold_body.dart)
- ❇️ Params added in default constructor:
reverse(named, optional, default: false),itemBuilder(named, optional),itemCount(named, optional),findChildIndexCallback(named, optional) - ❇️ Properties added:
reverse,itemBuilder,itemCount,findChildIndexCallback
class LdSlider (lib/src/value_slider.dart)
- ❇️ Params added in default constructor:
onChangeEnd(named, optional),valueFormatter(named, optional) - ❇️ Params added in constructor
range:onRangeChangeEnd(named, optional),valueFormatter(named, optional) - ❇️ Properties added:
onChangeEnd,onRangeChangeEnd,valueFormatter
class LdSwitch (lib/src/switch.dart)
- ❇️ Property added:
activeIndex
class LdTheme (lib/src/theme/theme.dart)
- ❇️ Methods added:
controlContentPadding,controlHeight
class LdThemeProvider (lib/src/theme/theme_provider.dart)
- ❇️ Param added in default constructor:
applyWindowDecoration(named, optional, default: true) - ❇️ Property added:
applyWindowDecoration
class MonkeyRouteNode<T extends Identifiable (lib/src/monkey/monkey_route_tree.dart)
- ❌ Param removed in default constructor:
reorderHandler(named, optional)
function buildMonkeyRoutes<T extends Identifiable (lib/src/monkey/monkey_routes.dart)
- ❌ Param removed in function
buildMonkeyRoutes:reorderHandler(named, optional)
function ldAppBarFocusScopeHasInputFocus (lib/src/appbar/appbar_frame.dart)
- ❇️ Function added:
ldAppBarFocusScopeHasInputFocus
function neutralGhostColor (lib/src/touchable/neutral_ghost_color.dart)
- ❇️ Function added:
neutralGhostColor
👀 Patch changes
class LdSubmitController<T, Arg> (lib/src/submit/model/submit_controller.dart)
- ❇️ Properties added:
_generation,_debugLabel - ❇️ Methods added:
_logDebug,_isCurrentGeneration,_invalidateInFlight
class LdSwitch (lib/src/switch.dart)
- 🔄 Method type changed:
_buildItem(Widget→List<Widget>)
class _AppBarFrameState (lib/src/appbar/appbar_frame.dart)
- ❇️ Class added:
_AppBarFrameState
class _ButtonShape (lib/src/button.dart)
- ❌ Property removed:
_circularSizeBump
class _DatePickerSheet (lib/src/date_picker.dart)
- ❌ Class removed:
_DatePickerSheet
class _DatePickerSheetState (lib/src/date_picker.dart)
- ❌ Class removed:
_DatePickerSheetState
class _EmojiRaster (lib/src/emoji/emoji.dart)
- ❇️ Class added:
_EmojiRaster
class _LdCounterDigit (lib/src/counter.dart)
- ❌ Properties removed:
size,type - ❇️ Property added:
style
class _LdCounterState (lib/src/counter.dart)
- ❇️ Method added:
_getStyle
class _LdCounterWidget (lib/src/counter.dart)
- ❌ Class removed:
_LdCounterWidget
class _LdDatePickerModalState (lib/src/date_picker.dart)
- ❇️ Class added:
_LdDatePickerModalState
class _LdDatePickerState (lib/src/date_picker.dart)
- ❌ Property removed:
_selectedDateNotifier
class _LdEmojiState (lib/src/emoji.dart)
- ❌ Property removed:
_offset - ❇️ Property added:
_raster - ❌ Method removed:
_compute
class _LdInputState (lib/src/input.dart)
- ❌ Property removed:
_shortcutBindings - ❇️ Property added:
_isMultiline - ❇️ Methods added:
_submitFromKeyboard,_insertNewline,_shouldSubmitOnEnter,_shortcutBindings
class _LdMonkeyViewingItemLoader<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❌ Properties removed:
id,buildItem - ❇️ Properties added:
ids,builder
class _LdMonkeyViewingItemSubmitBuilder<T extends Identifiable (lib/src/monkey/detail_page.dart)
- ❌ Class removed:
_LdMonkeyViewingItemSubmitBuilder
class _LdNavigationRailDestination (lib/src/drawer/navigation_rail.dart)
- ❇️ Class added:
_LdNavigationRailDestination
class _LdSliderHandle (lib/src/value_slider.dart)
- ❌ Property removed:
tooltipKey - ❇️ Property added:
showTooltip
class _LdSliderHandleState (lib/src/value_slider.dart)
- ➖ Method annotation removed:
didUpdateWidget(@override) - ➕ Methods annotation added:
didUpdateWidget(@mustCallSuper),didUpdateWidget(@protected)
class _LdSliderState (lib/src/value_slider.dart)
- ❌ Properties removed:
_lowTooltipKey,_highTooltipKey
meta pubspec.yaml (pubspec.yaml)
- 📦 Added
args: with version^2.4.0 - 📦 Added
path: with version^1.9.0
function _analysisFontSize (lib/src/emoji/emoji.dart)
- ❇️ Function added:
_analysisFontSize
function _computeTranslation (lib/src/emoji.dart)
- ❌ Function removed:
_computeTranslation
function _cropImage (lib/src/emoji/emoji.dart)
- ❇️ Function added:
_cropImage
function _findDeepestPoppableShell (lib/src/appbar/implied/back_button.dart)
- ❇️ Function added:
_findDeepestPoppableShell
function _getOrCompute (lib/src/emoji.dart)
- 🔄 Function type changed:
_getOrCompute(Future<Offset>→Future<_EmojiRaster>) - 🔄 Param type changed in function
_getOrCompute:compute(Future<Offset> Function()→Future<_EmojiRaster> Function())
function _popShellMatch (lib/src/appbar/implied/back_button.dart)
- ❇️ Function added:
_popShellMatch
function _rasterizeEmoji (lib/src/emoji/emoji.dart)
- ❇️ Function added:
_rasterizeEmoji
function _renderEmoji (lib/src/emoji.dart)
- ❌ Function removed:
_renderEmoji
23.0.0-8 #
Released on: 7/10/2026, changelog automatically generated.
Bug Fixes #
- use gesture detector for touchables again, but disable double tap on app bars since it adds touch delays. (bf9d097)
- touchable: extract trackPan flag; honour hitTestBehavior in non-trackPan path (bd921b6)
- list: remove spurious border on LdListItemLoading; fix timer leak in LdSlidableListItem; restrict marquee drag to mouse (a3aadf7)
- selectable_list: move child argument last in GestureDetector (sort_child_properties_last) (c8745a5)
Features #
- linked list choose (74f8aa3)
API Changes #
💣 Breaking changes
class LdListItemWidget (lib/src/list/list_item.dart)
- 🔄 Superclass changed:
StatelessWidget→StatefulWidget - ❌ Method removed:
build
class LdMetaball (lib/src/metaball/metaball.dart)
- ❌ Params removed in default constructor:
children(named, required),surfaceColor(named, required),borderColor(named, required) - ❇️ Param added in default constructor:
child(named, required) - ❌ Properties removed:
children,blend,surfaceColor,borderColor,borderWidth,interactive
class LdMetaballChild (lib/src/metaball/metaball.dart)
- ❌ Class removed:
LdMetaballChild
class LdMetaballMask (lib/src/metaball/metaball_mask.dart)
- 🔄 Param type changed in default constructor:
borderShader(FragmentShader→FragmentShader?),borderColor(Color→Color?) - 🔄 Properties type changed:
borderShader,borderColor
class LdMetaballMaskScoped (lib/src/metaball/metaball_mask.dart)
- ❌ Class removed:
LdMetaballMaskScoped
class LdMetaballShaderScope (lib/src/metaball/metaball_shader_scope.dart)
- ❌ Class removed:
LdMetaballShaderScope
class LdMetaballShaders (lib/src/metaball/metaball_shader_scope.dart)
- ❌ Class removed:
LdMetaballShaders
✨ Minor changes
class LdChooseLinkedListTrigger<T extends Identifiable (lib/src/choose/choose_linked_list_trigger.dart)
- ❇️ Class added:
LdChooseLinkedListTrigger
class LdChooseTriggerConfig<T extends Identifiable (lib/src/choose/choose.dart)
- ❇️ Params added in default constructor:
onRemoveItem(named, optional),allowEmpty(named, optional, default: false) - ❇️ Properties added:
onRemoveItem,allowEmpty
class LdExceptionView (lib/src/exception/exception_view.dart)
- ❇️ Param added in default constructor:
showIndicator(named, optional, default: true) - ❇️ Property added:
showIndicator
class LdListItem (lib/src/list/list_item.dart)
- ❇️ Param added in default constructor:
shadow(named, optional) - ❇️ Param added in constructor
trailingForward:shadow(named, optional) - ❇️ Property added:
shadow
class LdListItemConfig (lib/src/list/list_item.dart)
- ❇️ Param added in default constructor:
shadow(named, optional) - ❇️ Property added:
shadow
class LdListItemWidget (lib/src/list/list_item.dart)
- ❇️ Param added in default constructor:
shadow(named, optional) - ❇️ Property added:
shadow - ❇️ Method added:
createState
class LdMetaball (lib/src/metaball/metaball.dart)
- ❌ Params removed in default constructor:
blend(named, optional, default: 40),borderWidth(named, optional, default: 1),interactive(named, optional, default: true) - ❇️ Params added in default constructor:
shape(named, optional, default: LdMetaballShape.roundedRect),cornerRadius(named, optional, default: 16) - ❇️ Properties added:
child,shape,cornerRadius
class LdMetaballMask (lib/src/metaball/metaball_mask.dart)
- ✅ Params became optional in default constructor:
borderShader(named, required),borderColor(named, required) - ❌ Param removed in method
setUniforms:expand(named, optional, default: 0) - ❇️ Methods added:
setFillUniforms,setBorderUniforms
class LdMetaballScope (lib/src/metaball/metaball.dart)
- ❇️ Class added:
LdMetaballScope
class LdSlidableListItem (lib/src/list/slidable_list_item.dart)
- ❇️ Param added in default constructor:
initialPeek(named, optional, default: true) - ❇️ Property added:
initialPeek
class LdTheme (lib/src/theme/theme.dart)
- ❇️ Properties added:
monoFontFamily,monoFontFamilyPackage
class LdTouchableSurface (lib/src/touchable/touchable.dart)
- ❇️ Param added in default constructor:
trackPan(named, optional, default: false) - ❇️ Property added:
trackPan
function ldButtonCircularPreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonCircularPreview
function ldButtonDisabledPreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonDisabledPreview
function ldButtonFilledPreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonFilledPreview
function ldButtonGhostPreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonGhostPreview
function ldButtonLeadingPreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonLeadingPreview
function ldButtonOutlinePreview (lib/src/button.dart)
- ❇️ Function added:
ldButtonOutlinePreview
function ldHintPreview (lib/src/hint.dart)
- ❇️ Function added:
ldHintPreview
function ldHintWithBackgroundPreview (lib/src/hint.dart)
- ❇️ Function added:
ldHintWithBackgroundPreview
👀 Patch changes
class LdListItemWidget (lib/src/list/list_item.dart)
- ❌ Methods removed:
_buildSelectionControls,_buildIconTheme,_buildLeading,_buildTrailing,_buildTitle,_buildSubtitle,_buildSubContent
class LdMetaballMask (lib/src/metaball/metaball_mask.dart)
- ❌ Method removed:
_maskedLayer - ❇️ Method added:
_writeCommon
class LdTheme (lib/src/theme/theme.dart)
- ❇️ Properties added:
_monoFontFamily,_monoFontFamilyPackage
class _LdListItemWidgetState (lib/src/list/list_item.dart)
- ❇️ Class added:
_LdListItemWidgetState
class _LdMetaballScopeData (lib/src/metaball/metaball.dart)
- ❇️ Class added:
_LdMetaballScopeData
class _LdMetaballScopeState (lib/src/metaball/metaball.dart)
- ❇️ Class added:
_LdMetaballScopeState
class _LdMetaballShaderData (lib/src/metaball/metaball_shader_scope.dart)
- ❌ Class removed:
_LdMetaballShaderData
class _LdMetaballShaderScopeState (lib/src/metaball/metaball_shader_scope.dart)
- ❌ Class removed:
_LdMetaballShaderScopeState
class _LdMetaballState (lib/src/metaball/metaball.dart)
- ➖ Mixin removed: SingleTickerProviderStateMixin
- ❌ Properties removed:
_ticker,_tickerModeNotifier,_fill,_border,_ownedShaders,_children,_blobs,_pointerPos,_pointerDown,_radiusSpring,_radiusPeak,_radiusRest,_radiusOff,_bounceTimer,_lastTick - ❇️ Properties added:
_key,_scope - ➖ Methods annotation removed:
activate(@override),debugFillProperties(@override) - ➕ Methods annotation added:
activate(@protected),activate(@mustCallSuper),debugFillProperties(@protected),debugFillProperties(@mustCallSuper) - ❌ Methods removed:
createTicker,_updateTicker,_updateTickerModeNotifier,_rebuildChildren,_tryBorrowShaders,_loadOwnShaders,_onTick,_measureBlobs,_blobListEqual,_onPointerDown,_onPointerMove,_onPointerUp - ❇️ Method added:
_measure
class _LdSlidableGroupState (lib/src/list/slidable_list_item.dart)
- ❇️ Property added:
_hintClaimed - ❇️ Method added:
claimHint
class _LdSlidableListItemState (lib/src/list/slidable_list_item.dart)
- ❌ Properties removed:
_animationStart,_animationEnd,_isAnimating,_animationKey - ❇️ Properties added:
_peekDelay,_peekDuration,_peekCompleted,_peekRunning,_peekDelayTimer,_peekDurationTimer,_contextMenuKey - ➖ Methods annotation removed:
initState(@protected),initState(@mustCallSuper),didUpdateWidget(@mustCallSuper),didUpdateWidget(@protected) - ➕ Methods annotation added:
initState(@override),didUpdateWidget(@override) - ❇️ Methods added:
_maybeRunPeek,_handleSecondaryTapDown
class _LdSubmitDialogState<T, Arg> (lib/src/submit/builders/dialog_builder.dart)
- ➖ Methods annotation removed:
didChangeDependencies(@protected),didChangeDependencies(@mustCallSuper) - ➕ Method annotation added:
didChangeDependencies(@override) - ❌ Methods removed:
buildLoadingDialog,buildErrorDialog - ❇️ Method added:
buildDialog
class _LdTouchableSurfaceState (lib/src/touchable/touchable.dart)
- ❌ Property removed:
_pointerDownOffset - ❇️ Method added:
_buildGestureLayer
class _MetaballBorderPainter (lib/src/metaball/metaball_mask.dart)
- ❇️ Class added:
_MetaballBorderPainter
class _MetaballChild (lib/src/metaball/metaball.dart)
- ❌ Class removed:
_MetaballChild
23.0.0-7 #
Released on: 7/7/2026, changelog automatically generated.
Bug Fixes #
- remove shaders/ from assets section in liquid_flutter pubspec (152e4ea)
- resolve --fatal-infos analyzer warnings across packages (dcabf46)
- update reactive forms tests to match current API (af496a7)
- minor appbar issues, and adjust sizing slightly (42c8fbc)
- tests: fix all failing tests across liquid_flutter package (13572f3)
- tests: fix reactive-forms test failures and regenerate golden trees (eec4716)
Features #
- add Tab + PageView component and update routing for new demo (fb02cab)
- add new skills for Liquid Flutter including EMD theme, Markdown rendering, reactive forms, and window utilities (7c5aae1)
- emoji pickers, markdown editor, refactor details forms etc. (7dc69bd)
API Changes #
💣 Breaking changes
class LdAvatar (lib/src/avatar.dart)
- ❌ Property removed:
emoji
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- 🔄 Method type changed:
update(Future<void>→Future<T?>)
class LdForm (lib/src/form.dart)
- ❌ Class removed:
LdForm
class LdFormHint (lib/src/form.dart)
- ❌ Class removed:
LdFormHint
class LdFormItem (lib/src/form.dart)
- ❌ Class removed:
LdFormItem
class LdHint (lib/src/hint.dart)
- ❌ Param removed in constructor
info:type(named, required) - ❌ Param removed in constructor
warning:type(named, required) - ❌ Param removed in constructor
success:type(named, required) - ❌ Param removed in constructor
error:type(named, required) - ❌ Param removed in constructor
canceled:type(named, required) - ❌ Param removed in constructor
loading:type(named, required) - ❌ Param removed in constructor
pending:type(named, required) - ❌ Param removed in constructor
ongoing:type(named, required)
class LdIndicator (lib/src/indicators.dart)
- ❌ Param removed in constructor
info:type(named, required) - ❌ Param removed in constructor
warning:type(named, required) - ❌ Param removed in constructor
canceled:type(named, required) - ❌ Param removed in constructor
error:type(named, required) - ❌ Param removed in constructor
success:type(named, required) - ❌ Param removed in constructor
loading:type(named, required) - ❌ Param removed in constructor
pending:type(named, required) - ❌ Param removed in constructor
ongoing:type(named, required)
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- 🔄 Method type changed:
updateFromModel(Future<void>→Future<T?>)
class LdModel<T extends Identifiable (lib/src/monkey/data/ld_model.dart)
- 🔄 Method type changed:
update(Future<void>→Future<T?>)
class LdSubmitController<T, Arg> (lib/src/submit/model/submit_controller.dart)
- ❌ Property removed:
canRetrigger
class LdTabNavigation (lib/src/appbar/tab_navigation.dart)
- 🔄 Param type changed in default constructor:
activeRoute(String→String?) - 🔄 Property type changed:
activeRoute
class LdWrapConditional (lib/src/conditional_parent.dart)
- 🔄 Superclass changed:
StatelessWidget→StatefulWidget - ❌ Method removed:
build
class LiquidLocalizations (lib/src/l10n/generated/liquid_localizations.dart)
- ❌ Properties removed:
fieldConflictYours,fieldConflictServer
function ldMonkeyConfirmDiscardEdits (lib/src/monkey/detail_editor/ld_monkey_discard_confirm.dart)
- ❌ Function removed:
ldMonkeyConfirmDiscardEdits
✨ Minor changes
class LdAppBar (lib/src/appbar/appbar.dart)
- ❌ Param removed in constructor
top:positionMode(named, optional) - ❌ Param removed in constructor
bottom:positionMode(named, optional)
class LdAvatar (lib/src/avatar.dart)
- ❌ Param removed in default constructor:
emoji(named, optional, default: false) - ❌ Param removed in method
success:emoji(named, optional, default: false) - ❌ Param removed in method
warning:emoji(named, optional, default: false) - ❌ Param removed in method
error:emoji(named, optional, default: false)
class LdButton (lib/src/button.dart)
- ❇️ Param added in default constructor:
onHover(named, optional) - ❌ Param removed in constructor
ghost:mode(named, optional) - ❇️ Param added in constructor
ghost:onHover(named, optional) - ❌ Param removed in constructor
vague:mode(named, optional) - ❇️ Param added in constructor
vague:onHover(named, optional) - ❌ Param removed in constructor
outline:mode(named, optional) - ❇️ Param added in constructor
outline:onHover(named, optional) - ❌ Param removed in constructor
filled:mode(named, optional) - ❇️ Param added in constructor
filled:onHover(named, optional) - ❇️ Property added:
onHover - ❇️ Param added in method
warning:onHover(named, optional) - ❇️ Param added in method
error:onHover(named, optional) - ❇️ Param added in method
success:onHover(named, optional)
class LdButtonConfig (lib/src/button.dart)
- ❇️ Param added in default constructor:
onHover(named, optional) - ❇️ Property added:
onHover
class LdCheckboxConfig (lib/src/checkbox.dart)
- ❇️ Param added in default constructor:
label(named, optional) - ❇️ Property added:
label
class LdChoose<T extends Identifiable (lib/src/choose/choose.dart)
- ❇️ Param added in default constructor:
actions(named, optional, default: const []) - ❇️ Property added:
actions
class LdColorBundle (lib/src/touchable/touchable_colors.dart)
- ❇️ Class added:
LdColorBundle
class LdCounter (lib/src/counter.dart)
- ❌ Param removed in constructor
s:size(named, optional, default: LdSize.m) - ❌ Param removed in constructor
l:size(named, optional, default: LdSize.m) - ❌ Param removed in constructor
xs:size(named, optional, default: LdSize.m)
class LdEmoji (lib/src/emoji.dart)
- ❇️ Class added:
LdEmoji
class LdEmojiCategory (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
LdEmojiCategory
class LdEmojiEntry (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
LdEmojiEntry
class LdEmojiPickerModal (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
LdEmojiPickerModal
class LdFilterSearch<T extends Identifiable (lib/src/monkey/filter/ld_filter_search.dart)
- ❇️ Param added in method
searchConfig:inputFocusNode(named, optional)
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- ❇️ Properties added:
deletedItems,detachedItemsById - ❇️ Method added:
removeItemById
class LdListItem (lib/src/list/list_item.dart)
- ❌ Param removed in constructor
trailingForward:trailing(named, optional)
class LdMetaball (lib/src/metaball/metaball.dart)
- ❇️ Class added:
LdMetaball
class LdMetaballBlob (lib/src/metaball/metaball_blob.dart)
- ❇️ Class added:
LdMetaballBlob
class LdMetaballChild (lib/src/metaball/metaball.dart)
- ❇️ Class added:
LdMetaballChild
class LdMetaballMask (lib/src/metaball/metaball_mask.dart)
- ❇️ Class added:
LdMetaballMask
class LdMetaballMaskScoped (lib/src/metaball/metaball_mask.dart)
- ❇️ Class added:
LdMetaballMaskScoped
class LdMetaballShaderScope (lib/src/metaball/metaball_shader_scope.dart)
- ❇️ Class added:
LdMetaballShaderScope
class LdMetaballShaders (lib/src/metaball/metaball_shader_scope.dart)
- ❇️ Class added:
LdMetaballShaders
enum LdMetaballShape (lib/src/metaball/metaball_blob.dart)
- ❇️ Enum added:
LdMetaballShape
class LdMonkeySearchFocusNode (lib/src/monkey/monkey_shell.dart)
- ❇️ Class added:
LdMonkeySearchFocusNode
class LdMonkeySelection<T extends Identifiable (lib/src/monkey/monkey_selection.dart)
- ❇️ Method added:
toString
class LdPaginator<T extends Identifiable (lib/src/list/list_paginator.dart)
- ❇️ Method added:
removeItemById
class LdSearchConfig (lib/src/appbar/search_config.dart)
- ❇️ Property added:
inputFocusNode
class LdSubmit<T, Arg> (lib/src/submit/submit.dart)
- ❇️ Param added in default constructor:
disabled(named, optional) - ❇️ Property added:
disabled
class LdSubmitController<T, Arg> (lib/src/submit/model/submit_controller.dart)
- ❇️ Properties added:
isDisabled,disabled
class LdTabNavigation (lib/src/appbar/tab_navigation.dart)
- ✅ Param became optional in default constructor:
activeRoute(named, required) - ❇️ Param added in default constructor:
pageController(named, optional) - ❇️ Property added:
pageController
class LdText (lib/src/text.dart)
- ❌ Param removed in constructor
caption:type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
h:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
hl:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
hs:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
hxs:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Param removed in constructor
l:type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
ll:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
ls:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
lxs:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Param removed in constructor
p:type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
pl:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
ps:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph) - ❌ Params removed in constructor
pxs:size(named, optional, default: LdSize.m),type(named, optional, default: LdTextType.paragraph)
class LdTheme (lib/src/theme/theme.dart)
- ❇️ Property added:
fontFamilyFallback
class LdTouchableStatus (lib/src/touchable/touchable_status.dart)
- ❇️ Class added:
LdTouchableStatus
class LdTouchableSurface (lib/src/touchable/touchable.dart)
- ❇️ Param added in default constructor:
onHover(named, optional) - ❇️ Property added:
onHover
class LdWrapConditional (lib/src/conditional_parent.dart)
- ❇️ Method added:
createState
class LiquidLocalizations (lib/src/l10n/generated/liquid_localizations.dart)
- ❇️ Properties added:
fieldConflictKeepMine,fieldConflictUseServer,save,saving,create,creating,discardChanges
class _LdAvatarWidget (lib/src/avatar.dart)
- ❌ Param removed in default constructor:
emoji(named, optional, default: false)
class _LdButtonWidget (lib/src/button.dart)
- ❇️ Param added in default constructor:
onHover(named, optional)
function ghostColor (lib/src/touchable/ghost_color.dart)
- ❇️ Function added:
ghostColor
function inputColor (lib/src/touchable/input_color.dart)
- ❇️ Function added:
inputColor
function ldFormConfirmDiscardEdits (lib/src/monkey/detail_editor/ld_monkey_discard_confirm.dart)
- ❇️ Function added:
ldFormConfirmDiscardEdits
function solidColor (lib/src/touchable/solid_color.dart)
- ❇️ Function added:
solidColor
👀 Patch changes
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- ❌ Methods removed:
_confirmDeletionForId,_confirmPagedDeletion - ❇️ Method added:
_maybeRefreshPostDeletion
class LdSubmitController<T, Arg> (lib/src/submit/model/submit_controller.dart)
- ❇️ Property added:
_isDisabled
class LdTheme (lib/src/theme/theme.dart)
- ❇️ Property added:
_fontFamilyFallback
class _EmojiCell (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
_EmojiCell
class _EmojiGrid (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
_EmojiGrid
class _LdAvatarWidget (lib/src/avatar.dart)
- ❌ Property removed:
emoji
class _LdButtonWidget (lib/src/button.dart)
- ❇️ Property added:
onHover
class _LdCheckboxWidget (lib/src/checkbox.dart)
- ➕ Constructor annotation added:
new(@ContextConfigurable()) - ➖ Params annotation removed:
(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable())
class _LdEmojiPickerModalState (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
_LdEmojiPickerModalState
class _LdEmojiState (lib/src/emoji.dart)
- ❇️ Class added:
_LdEmojiState
class _LdFormState (lib/src/form.dart)
- ❌ Class removed:
_LdFormState
class _LdMetaballShaderData (lib/src/metaball/metaball_shader_scope.dart)
- ❇️ Class added:
_LdMetaballShaderData
class _LdMetaballShaderScopeState (lib/src/metaball/metaball_shader_scope.dart)
- ❇️ Class added:
_LdMetaballShaderScopeState
class _LdMetaballState (lib/src/metaball/metaball.dart)
- ❇️ Class added:
_LdMetaballState
class _LdMonkeyShellState<T extends Identifiable (lib/src/monkey/monkey_shell.dart)
- ❇️ Property added:
_searchFocusNode - ➖ Methods annotation removed:
dispose(@protected),dispose(@mustCallSuper) - ➕ Method annotation added:
dispose(@override)
class _LdSearchInputState (lib/src/appbar/search_components.dart)
- ❌ Modifier
finalremoved from property:_inputFocusNode - ❇️ Modifier
lateadded to property:_inputFocusNode
class _LdTabNavigationState (lib/src/appbar/tab_navigation.dart)
- ❇️ Properties added:
_currentPageIndex,_springOverridden - ➖ Methods annotation removed:
initState(@protected),initState(@mustCallSuper) - ➕ Method annotation added:
initState(@override) - ❌ Param removed in method
_onTabTap:route(positional, required) - ❇️ Param added in method
_onTabTap:tabIndex(positional, required) - ❇️ Methods added:
_attachPageController,_detachPageController,_onPageControllerUpdate,_updateIndicatorFromPage
class _LdTouchableSurfaceState (lib/src/touchable/touchable.dart)
- ❇️ Property added:
_isHovering
class _LdWrapConditionalState (lib/src/conditional_parent.dart)
- ❇️ Class added:
_LdWrapConditionalState
class _MetaballChild (lib/src/metaball/metaball.dart)
- ❇️ Class added:
_MetaballChild
class _SkinTonePicker (lib/src/emoji_picker/emoji_picker.dart)
- ❇️ Class added:
_SkinTonePicker
class _SpringSim (lib/src/metaball/metaball.dart)
- ❇️ Class added:
_SpringSim
function _computeTranslation (lib/src/emoji.dart)
- ❇️ Function added:
_computeTranslation
function _getOrCompute (lib/src/emoji.dart)
- ❇️ Function added:
_getOrCompute
function _isInputLike (lib/src/autospace.dart)
- ❇️ Function added:
_isInputLike
function _renderEmoji (lib/src/emoji.dart)
- ❇️ Function added:
_renderEmoji
function _resolveSize (lib/src/emoji.dart)
- ❇️ Function added:
_resolveSize
23.0.0-6 #
Released on: 7/2/2026, changelog automatically generated.
Bug Fixes #
API Changes #
💣 Breaking changes
class CloseDrawerButton (lib/src/appbar/drawer_buttons.dart)
- ❌ Class removed:
CloseDrawerButton
class LdAppBar (lib/src/appbar/appbar.dart)
- ❌ Properties removed:
implyLeading,showWindowControls,implyCloseModalButton
class LdAppBarConfig (lib/src/appbar/appbar.dart)
- ❌ Properties removed:
implyCloseModalButton,implyLeading,showWindowControls
class LdAppBarParentShowsImpliedLeading (lib/src/appbar/appbar.dart)
- ❌ Class removed:
LdAppBarParentShowsImpliedLeading
class LdAppBarScrollNotification (lib/src/appbar/appbar_scroll_notifier.dart)
- ❇️ Param added in default constructor:
momentumVelocity(named, required)
class LdAppBarWidget (lib/src/appbar/appbar.dart)
- ❌ Properties removed:
implyLeading,showWindowControls,implyCloseModalButton
class LdBottomBar (lib/src/appbar/bottom_bar.dart)
- ❌ Class removed:
LdBottomBar
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- 🔄 Param type changed in default constructor:
updateBatchFn(Future<void> Function(BuildContext, Set<T>)?→Future<void> Function(BuildContext, Map<IdType, T>)?) - 🔄 Properties type changed:
cache,updateBatchFn - 🔄 Param type changed in method
persistUpdateBatch:items(Set<T>→Map<IdType, T>) - 🔄 Param type changed in method
updateBatch:items(Set<T>→Map<IdType, T>) - 🔄 Param type changed in method
greedy:updateBatch(Future<void> Function(BuildContext, Set<L>)?→Future<void> Function(BuildContext, Map<IdType, L>)?)
class LdChooseTriggerConfig<T extends Identifiable (lib/src/choose/choose.dart)
- 🔄 Param type changed in default constructor:
hint(Widget?→Widget) - 🔄 Property type changed:
hint
class LdList<T extends Identifiable (lib/src/list/list.dart)
- ❌ Property removed:
assumedItemHeight
class LdListConfig<T extends Identifiable (lib/src/list/list.dart)
- ❌ Property removed:
assumedItemHeight
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- 🔄 Properties type changed:
fetchListFunction,model - ❌ Methods removed:
ensureSelectionAnchored,ensureSelectionLoaded - 🔄 Param type changed in method
updateBatchFromModel:items(Set<TUpdate>→Map<IdType, TUpdate>)
class LdListItem (lib/src/list/list_item.dart)
- 🔄 Param type changed in default constructor:
selectDisabled(bool→bool?),tradeLeadingForSelectionControl(bool→bool?) - 🔄 Param type changed in constructor
trailingForward:selectDisabled(bool→bool?),tradeLeadingForSelectionControl(bool→bool?) - 🔄 Properties type changed:
selectDisabled,tradeLeadingForSelectionControl
class LdListWidget<T extends Identifiable (lib/src/list/list.dart)
- ❌ Property removed:
assumedItemHeight
class LdModel<T extends Identifiable (lib/src/monkey/data/ld_model.dart)
- 🔄 Property type changed:
cache - 🔄 Param type changed in method
persistUpdateBatch:items(Set<TUpdate>→Map<IdType, TUpdate>) - 🔄 Param type changed in method
updateBatch:items(Set<TUpdate>→Map<IdType, TUpdate>)
class LdMonkeyAppBar<T extends Identifiable (lib/src/monkey/monkey_app_bar.dart)
- ❌ Property removed:
implyLeading
class LdMonkeyRouteScope<T extends Identifiable (lib/src/monkey/monkey_route_scope.dart)
- ❌ Property removed:
detailPanelFlex
class LdMonkeyShell<T extends Identifiable (lib/src/monkey/monkey_shell.dart)
- ❌ Property removed:
detailPanelFlex
class LdPaginator<T extends Identifiable (lib/src/list/list_paginator.dart)
- 🔄 Param type changed in default constructor:
fetchListFunction(Future<LdListPage<T>> Function(FetchPageParameters<T, IdType>)?→Future<LdListPage<T>> Function(FetchPageParameters<T, IdType>)) - ⚠️ Param became required in default constructor:
fetchListFunction(named, optional) - 🔄 Property type changed:
fetchListFunction
class LdSelectableList<T extends Identifiable (lib/src/list/selectable_list.dart)
- ❌ Param removed in default constructor:
paginator(named, required) - ❇️ Param added in default constructor:
listController(named, required) - ❌ Property removed:
paginator
class MonkeyRouteNode<T extends Identifiable (lib/src/monkey/monkey_route_tree.dart)
- ❌ Property removed:
detailPanelFlex
class OpenDrawerButton (lib/src/appbar/drawer_buttons.dart)
- ❌ Class removed:
OpenDrawerButton
class _MonkeyShellLayoutBuilder<T extends Identifiable (lib/src/monkey/monkey_shell.dart)
- ❌ Param removed in default constructor:
detailPanelFlex(named, required) - ❇️ Param added in default constructor:
detailPanelFraction(named, required)
✨ Minor changes
class LdAppBar (lib/src/appbar/appbar.dart)
- ❌ Params removed in default constructor:
implyCloseModalButton(named, optional),implyLeading(named, optional),showWindowControls(named, optional) - ❇️ Param added in default constructor:
implyFeatures(named, optional) - ❌ Params removed in constructor
top:implyCloseModalButton(named, optional),implyLeading(named, optional),showWindowControls(named, optional) - ❇️ Param added in constructor
top:implyFeatures(named, optional) - ❌ Params removed in constructor
bottom:implyCloseModalButton(named, optional),implyLeading(named, optional),showWindowControls(named, optional) - ❇️ Param added in constructor
bottom:implyFeatures(named, optional) - ❇️ Property added:
implyFeatures
class LdAppBarBackButton (lib/src/appbar/implied/back_button.dart)
- ❇️ Class added:
LdAppBarBackButton
class LdAppBarCloseModalButton (lib/src/appbar/implied/close_modal_button.dart)
- ❇️ Class added:
LdAppBarCloseModalButton
class LdAppBarConfig (lib/src/appbar/appbar.dart)
- ❌ Params removed in default constructor:
implyCloseModalButton(named, optional),implyLeading(named, optional),showWindowControls(named, optional) - ❇️ Param added in default constructor:
implyFeatures(named, optional) - ❇️ Property added:
implyFeatures
enum LdAppBarImpliedFeature (lib/src/appbar/implied/implied_features.dart)
- ❇️ Enum added:
LdAppBarImpliedFeature
class LdAppBarImpliedFeatures (lib/src/appbar/implied/implied_features.dart)
- ❇️ Class added:
LdAppBarImpliedFeatures
extension LdAppBarImpliedFeaturesExtension (lib/src/appbar/implied/implied_features.dart)
- ❇️ Extension added:
LdAppBarImpliedFeaturesExtension
class LdAppBarMetrics (lib/src/appbar/appbar_state.dart)
- ❇️ Property added:
isModal - ❇️ Method added:
reset
extension LdAppBarPositionExtension (lib/src/appbar/appbar_state.dart)
- ❇️ Extension added:
LdAppBarPositionExtension
class LdAppBarScrollNotification (lib/src/appbar/appbar_scroll_notifier.dart)
- ❇️ Property added:
momentumVelocity
class LdAppBarWidget (lib/src/appbar/appbar.dart)
- ❌ Params removed in default constructor:
implyCloseModalButton(named, optional, default: true),implyLeading(named, optional),showWindowControls(named, optional, default: true) - ❇️ Param added in default constructor:
implyFeatures(named, optional, default: const {LdAppBarImpliedFeature.back, LdAppBarImpliedFeature.close, LdAppBarImpliedFeature.windowControls, LdAppBarImpliedFeature.drawerToggle}) - ❇️ Property added:
implyFeatures
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- ❌ Modifier
finalremoved from property:cache - ❇️ Methods added:
fetchListWithParametersCached,invalidateCacheOnMutation
class LdDrawerButton (lib/src/appbar/implied/drawer_buttons.dart)
- ❇️ Class added:
LdDrawerButton
enum LdDrawerButtonType (lib/src/appbar/implied/drawer_buttons.dart)
- ❇️ Enum added:
LdDrawerButtonType
extension LdDrawerSlotExtension (lib/src/scaffold.dart)
- ❇️ Extension added:
LdDrawerSlotExtension
class LdList<T extends Identifiable (lib/src/list/list.dart)
- ❌ Param removed in default constructor:
assumedItemHeight(named, optional)
class LdListCacheKeyPart (lib/src/monkey/data/ld_list_cache_key.dart)
- ❇️ Class added:
LdListCacheKeyPart
class LdListConfig<T extends Identifiable (lib/src/list/list.dart)
- ❌ Param removed in default constructor:
assumedItemHeight(named, optional)
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- ❌ Modifier
factoryremoved from constructor:fromModel - ❇️ Constructor added:
new - ❇️ Method added:
onTransientItemsEvictedByRefresh
class LdListEmpty (lib/src/list/list_empty.dart)
- ❇️ Params added in default constructor:
hasActiveFilters(named, optional, default: false),onClearFilters(named, optional) - ❇️ Properties added:
hasActiveFilters,onClearFilters
class LdListItem (lib/src/list/list_item.dart)
- ❇️ Param added in default constructor:
isOdd(named, optional) - ❇️ Param added in constructor
trailingForward:isOdd(named, optional) - ❇️ Property added:
isOdd
class LdListItemConfig (lib/src/list/list_item.dart)
- ❇️ Params added in default constructor:
leading(named, optional),selectDisabled(named, optional),subContent(named, optional),subtitle(named, optional),title(named, optional),tradeLeadingForSelectionControl(named, optional),width(named, optional),isOdd(named, optional) - ❇️ Properties added:
leading,selectDisabled,subContent,subtitle,title,tradeLeadingForSelectionControl,width,isOdd
class LdListItemWidget (lib/src/list/list_item.dart)
- ❇️ Param added in default constructor:
isOdd(named, optional, default: false) - ❇️ Property added:
isOdd
enum LdListMutationKind (lib/src/monkey/data/ld_list_cache_key.dart)
- ❇️ Enum added:
LdListMutationKind
class LdListWidget<T extends Identifiable (lib/src/list/list.dart)
- ❌ Param removed in default constructor:
assumedItemHeight(named, optional)
extension LdModalRouteExtension (lib/src/modal/modal.dart)
- ❇️ Extension added:
LdModalRouteExtension
class LdModel<T extends Identifiable (lib/src/monkey/data/ld_model.dart)
- ❇️ Methods added:
fetchListWithParametersCached,invalidateCacheOnMutation
class LdMonkeyAppBar<T extends Identifiable (lib/src/monkey/monkey_app_bar.dart)
- ❌ Param removed in default constructor:
implyLeading(named, optional)
class LdMonkeyRouteScope<T extends Identifiable (lib/src/monkey/monkey_route_scope.dart)
- ❌ Param removed in default constructor:
detailPanelFlex(named, optional) - ❇️ Param added in default constructor:
detailPanelFraction(named, optional) - ❇️ Property added:
detailPanelFraction
class LdMonkeyShell<T extends Identifiable (lib/src/monkey/monkey_shell.dart)
- ❌ Param removed in default constructor:
detailPanelFlex(named, optional, default: 2) - ❇️ Param added in default constructor:
detailPanelFraction(named, optional, default: 0.3) - ❇️ Property added:
detailPanelFraction
class LdMultiPanelLayout (lib/src/multi_panel/multi_panel_layout.dart)
- ❇️ Params added in default constructor:
minBodyWidth(named, optional),insetBody(named, optional, default: false) - ❇️ Properties added:
minBodyWidth,insetBody
class LdPaginator<T extends Identifiable (lib/src/list/list_paginator.dart)
- ❇️ Method added:
onTransientItemsEvictedByRefresh
class LdPartialBatchDeleteException (lib/src/monkey/data/ld_list_cache_key.dart)
- ❇️ Class added:
LdPartialBatchDeleteException
class LdSelectableList<T extends Identifiable (lib/src/list/selectable_list.dart)
- ❇️ Property added:
listController
class LiquidLocalizations (lib/src/l10n/generated/liquid_localizations.dart)
- ❇️ Properties added:
noItemsMatchFilter,clearFilters
class MacOSWindowControls (lib/src/appbar/implied/macos_window_controls.dart)
- ❇️ Class added:
MacOSWindowControls
class MonkeyRouteNode<T extends Identifiable (lib/src/monkey/monkey_route_tree.dart)
- ❌ Param removed in default constructor:
detailPanelFlex(named, optional) - ❇️ Param added in default constructor:
detailPanelFraction(named, optional) - ❇️ Property added:
detailPanelFraction
class WindowsWindowControls (lib/src/appbar/implied/windows_window_controls.dart)
- ❇️ Class added:
WindowsWindowControls
class _LdMonkeySelectionHydrator<T extends Identifiable (lib/src/monkey/monkey_router_adapter.dart)
- ❇️ Param added in default constructor:
key(named, optional)
function buildMonkeyRoutes<T extends Identifiable (lib/src/monkey/monkey_routes.dart)
- ❌ Param removed in function
buildMonkeyRoutes:detailPanelFlex(named, optional) - ❇️ Param added in function
buildMonkeyRoutes:detailPanelFraction(named, optional)
function ldListCacheKey<T extends Identifiable (lib/src/monkey/data/ld_list_cache_key.dart)
- ❇️ Function added:
ldListCacheKey
function parseLdListCacheKey (lib/src/monkey/data/ld_list_cache_key.dart)
- ❇️ Function added:
parseLdListCacheKey
👀 Patch changes
class LdCallbackModel<T extends Identifiable (lib/src/monkey/data/ld_callback_model.dart)
- ➖ Property annotation removed:
cache(@override) - ❇️ Properties added:
_ownedCache,_providedCache
class LdListController<T extends Identifiable (lib/src/monkey/data/list_controller.dart)
- ❌ Constructor removed:
_ - ❌ Properties removed:
_isGreedy,_autoCache,_autoInvalidateCache,_autoInvalidateCacheOnMutation - 🔄 Property type changed:
_attachedModel - ❇️ Property added:
_refreshInProgress - ❇️ Param added in method
_addToOffsetQueue:immediate(named, optional, default: false) - 🔄 Method type changed:
_fetchItems(Future<List<T>>→Future<bool>),_insertPageItems(List<T>→bool) - ❌ Methods removed:
_fetchWithAutoCache,_maybeInvalidateOnMutation,_idFromUpdatePayload - ✏️ Param renamed in method
initWithSelection:selection→selectedIds
class LdListItemWidget (lib/src/list/list_item.dart)
- ➕ Constructor annotation added:
new(@ContextConfigurable()) - ➖ Params annotation removed:
(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()),(@ContextConfigurable()), `` (@ContextConfigurable())
class LdModel<T extends Identifiable (lib/src/monkey/data/ld_model.dart)
- ❇️ Property added:
_ownedCache
class LdPaginator<T extends Identifiable (lib/src/list/list_paginator.dart)
- ❇️ Param added in method
_addToOffsetQueue:immediate(named, optional, default: false) - 🔄 Method type changed:
_fetchItems(Future<List<T>>→Future<bool>),_insertPageItems(List<T>→bool)
class LdScaffoldState (lib/src/scaffold.dart)
- ❌ Property removed:
_isSurface - 🔄 Property type changed:
_scaffoldDecoration
class LdSelectableListState<T extends Identifiable (lib/src/list/selectable_list.dart)
- ❇️ Method added:
_tryScrollToInitialSelection
class _LdAppBarScrollNotifierState (lib/src/appbar/appbar_scroll_notifier.dart)
- ❇️ Property added:
_lastMomentumFrameTime - ❇️ Method added:
_momentumVelocity
class _LdAppBarWidgetState (lib/src/appbar/appbar.dart)
- ❌ Properties removed:
_isModal,_canDismissModal,_drawerBlocksImplyLeading,_canPopParentRoute,_drawerSlot,_isDrawer - ❌ Methods removed:
_closeModalButton,_popParentRoute,_findDrawerParent,_buildLeading,_shouldImplyRouteBack,_showWindowsWindowControls
class _LdListReorderScopeState<T extends Identifiable (lib/src/list/reorderable_list.dart)
- ❌ Property removed:
_isMobile
class _LdListState<T extends Identifiable (lib/src/list/list.dart)
- ❌ Properties removed:
_performedInitialScroll,_pendingScrollAttempts,_maxPendingScrollAttempts - ❌ Methods removed:
_getAverageItemHeight,_maybeScrollToPendingItem,_scrollPendingItemIntoView,_maybePerformInitialScroll
class _LdMultiPanelLayoutState (lib/src/multi_panel/multi_panel_layout.dart)
- ❇️ Properties added:
_internalPanelFraction,_appliedPanelWidth,_bodyBorderSide,_panelIsLeft,_insetBody,_bodyDecoration,_insetPadding,_bodyMargin,_additionalDrawerPadding
class _LdToggleState (lib/src/toggle.dart)
- ❌ Property removed:
_controller - ➖ Method annotation removed:
didUpdateWidget(@override) - ➕ Methods annotation added:
didUpdateWidget(@mustCallSuper),didUpdateWidget(@protected) - ❌ Method removed:
_updateStatus
class _MonkeyShellLayoutBuilder<T extends Identifiable (lib/src/monkey/monkey_shell.dart)
- ❌ Property removed:
detailPanelFlex - ❇️ Property added:
detailPanelFraction
meta pubspec.yaml (pubspec.yaml)
- 📦 Added
meta: with version^1.9.0
function _goRouterCanPop (lib/src/appbar/implied/back_button.dart)
- ❇️ Function added:
_goRouterCanPop
function _goRouterShellNavigatorCanPop (lib/src/appbar/appbar.dart)
- ❌ Function removed:
_goRouterShellNavigatorCanPop
function _isDescendant (lib/src/appbar/implied/back_button.dart)
- ❇️ Function added:
_isDescendant
23.0.0-5 #
Released on: 6/28/2026, changelog automatically generated.
23.0.0-4 #
Released on: 6/23/2026, changelog automatically generated.
Unreleased #
Breaking changes #
- LdListCache: rename
LdRepositoryCache/LdRepositoryCacheEntry/LdRepositoryCacheKeyPart/LdRepositoryMutationKindtoLdListCache*/LdListMutationKind; renameldRepositoryCacheKey/parseLdRepositoryCacheKeytoldListCacheKey/parseLdListCacheKey - LdPaginator: rename
repositoryCacheparameter and field tolistCache - LdMonkeyDetailState: rename
repositoryfield tolistController - LdMonkeyListFilterAdapter: rename from
LdMonkeyRepositoryFilterAdapter(monkey_list_filter_adapter.dart) - Tests: rename
createTestRepositorytocreateTestListController; renamerepository_test.darttolist_controller_test.dart - Remove deprecated
mutationAffectsCacheon filter/sort options,LdMutationAffectsCachetypedef, andLdMonkeyAction.build()— useaffectedByUpdateandbuildTriggerinstead - Stop exporting internal monkey helpers:
resolveMonkeyRouteDefinitions,ldListCacheKey,parseLdListCacheKey,LdListCacheKeyPart, andLdListMutationKind
23.0.0-3 #
Released on: automatic fallback dev bump to avoid duplicate 23.0.0-2 publish.
Features #
- LdRepository: add
affectedByUpdateon filter/sort options (replaces deprecatedmutationAffectsCache) for shared cache invalidation and paginator layout decisions - LdPaginator: add
repositionItemById, safe delete compaction (canCompactIndicesAfterDeletion/compactIndicesAfterDeletion), and reposition-or-refresh mutation flows inLdRepository
Deprecations #
mutationAffectsCacheonLdFilterOption/LdSortOption— useaffectedByUpdateinsteadLdMutationAffectsCachetypedef — useLdAffectedByUpdateinstead
Older versions #
See CHANGELOG_ARCHIVE.md for earlier releases.