Forui 0.17.0
This update overhauls the API by introducing controls to support declarative state and adding support for the new dot-shorthand syntax.
To simplify updating to the latest version, we've included Data Driven Fixes.
This allows you to run automated fixes on your codebase to update it to be compatible with the latest version of forui.
After updating to the latest version, run:
dart fix --apply
FAccordion
-
Add
FAccordionControl. -
Breaking Remove
FAccordion.controller. UseFAccordion(control: .managed(...))instead. -
Fix
FAccordionItemnot being properly disposed.
FAutocomplete
-
Add
FAutocomplete.popoverControl. -
Add
FAutocompleteControl. -
Add
FAutocompleteItemMixin.item(...). -
Add
FAutocompleteItemMixin.raw(...). -
Add
FAutocompleteItemMixin.section(...). -
Add
FAutocompleteItemMixin.richSection(...). -
Add
FAutocompleteItem.item(...). -
Add
FAutocomplete.contentGroupId. -
Breaking Rename
FAutocomplete.anchortoFAutocomplete.contentAnchor. -
Breaking Rename
FAutocomplete.popoverConstraintstoFAutocomplete.contentConstraints. -
Breaking Rename
FAutocomplete.spacingtoFAutocomplete.contentSpacing. -
Breaking Rename
FAutocomplete.shifttoFAutocomplete.contentOverflow. -
Breaking Rename
FAutocomplete.offsettoFAutocomplete.contentOffset. -
Breaking Rename
FAutocomplete.hideRegiontoFAutocomplete.contentHideRegion. -
Breaking Rename
FAutocomplete.onTapHidetoFAutocomplete.contentOnTapHide. -
Breaking Remove
FAutocomplete.controller. UseFAutocomplete(control: .managed(...))instead. -
Breaking Remove
FAutocomplete.initialText. UseFAutocomplete(control: .managed(...))instead. -
Breaking Remove
FAutocompleteController.vsync. UseFAutocomplete(popoverControl: ...)instead. -
Breaking Remove
FAutocompleteController.popoverMotion. UseFAutocomplete(popoverControl: .managed(motion: ...))instead. -
Breaking Remove
FAutocompleteController.content. Use instead.
FBottomNavigationBar
-
Add
FBottomNavigationBar.safeAreaTop. -
Add
FBottomNavigationBar.safeAreaBottom. -
Change
FBottomNavigationBarItem.labelto be optional.
FBreadcrumb
- Breaking Rename
FBreadcrumb.shifttoFBreadcrumb.overflow. - Breaking Remove
FBreadcrumbItem.collapsed(popoverController: ...). UseFBreadcrumbItem.collapsed(popoverControl: .managed(...))instead. - Breaking Remove
FBreadcrumbItem.collapsedTiles(popoverController: ...). UseFBreadcrumbItem.collapsedTiles(popoverControl: .managed(...))instead.
FCalendar
Unfortunately, FCalendar cannot be easily migrated using data driven fixes due to the complexity of its API changes.
-
Add
FCalendarControl. -
Breaking Rename
FCalendarController.date(initialSelection: ...)toFCalendarController.date(initial: ...). -
Breaking Rename
FCalendarController.dates(initialSelections: ...)toFCalendarController.dates(initial: ...). -
Breaking Rename
FCalendarController.range(initialSelection: ...)toFCalendarController.range(initial: ...). -
Breaking Remove
FCalendar.controller. UseFCalendar(control: .managedDate(...))instead.
FCard
- Breaking Add
FCard.mainAxisSize, which defaults toMainAxisSize.min.
FCheckbox
- Breaking Remove
FCheckbox.grouped(...). UseFSelectGroupItemMixin.checkbox(...)instead.
FDateField
-
Add
FDateFieldControl. -
Add
FDateField(popoverControl: ...). -
Add
FDateField.calendar(popoverControl: ...). -
Add
FDateField.calendar(groupId: ...). -
Add
FDateFieldCalendarProperties.groupId. -
Change
FDateField's input to preserve text selection when changing dates programmatically or via the calendar. -
Breaking Rename
FDateField.shifttoFDateField.overflow. -
Breaking Rename
FDateFieldCalendarProperties.inputAnchortoFDateFieldCalendarProperties.fieldAnchor. -
Breaking Rename
FDateField.calendar(inputAnchor: ...)toFDateField.calendar(fieldAnchor: ...). -
Breaking Rename
FDateFieldController.calendartoFDateFieldController.popover. -
Breaking Rename
FDateFieldController(initialDate: ...)toFDateFieldController(date: ...). -
Breaking Remove
FDateField.controller. UseFDateField(control: .managed(controller: ...))instead. -
Breaking Remove
FDateField.initialDate. UseFDateField(control: .managed(initial: ...))instead. -
Breaking Remove
FDateField.onChange. UseFDateField(control: .managed(onChange: ...))instead. -
Breaking Remove
FDateFieldController(vsync: ..., popoverMotion: ...). UseFDateField(popoverControl: ...)instead. -
Breaking Remove
FDateFieldController(truncateAndStripTimezone: ...).
FItem & FItemGroup
- Add
FItemMixin.tile(...). - Add
FItemMixin.raw(...). - Add
FItemGroup.group(...). - Add
FItemGroupMixin.group(...). - Add
FItemGroupMixin.builder(...). - Add
FItemGroupMixin.merge(...).
FLineCalendar
-
Add
FLineCalendarControl. -
Breaking Remove
FLineCalendar.controller. UseFLineCalendar(control: .managed(controller: ...))instead. -
Breaking Remove
FLineCalendar.initialSelection. UseFLineCalendar(control: .managed(initial: ...))instead. -
Breaking Remove
FLineCalendar.onChange. UseFLineCalendar(control: .managed(onChange: ...))instead. -
Breaking Remove
FLineCalendar.toggleable. UseFLineCalendar(control: .managed(toggleable: ...))instead. -
Fix
FLineCalendarnot respectingFCalendarcontroller.selectable.
FPagination
-
Add
FPaginationControl. -
Breaking Remove
FPagination.controller. UseFPagination(control: .managed(controller: ...))instead. -
Breaking Remove
FPagination.initialPage. UseFPagination(control: .managed(initialPage: ...))instead. -
Breaking Remove
FPagination.pages. UseFPagination(control: .managed(pages: ...))instead. -
Breaking Remove
FPagination.onChange. UseFPagination(control: .managed(onChange: ...))instead. -
Breaking Change
FPaginationControllerto extendValueNotifier<int>instead ofFChangeNotifier. -
Breaking Rename
FPaginationController(initialPage: ...)toFPaginationController(page: ...). -
Breaking Rename
FPaginationController.pagetoFPaginationController.value.
FPicker
-
Add
FPickerControl. -
Add
FPickerController.animateTo(...). -
Breaking Rename
FPickerController(initialIndexes: ...)toFPickerController(indexes: ...). -
Breaking Remove
FPicker.controller. UseFPicker(control: .managed(...))instead. -
Breaking Remove
FPicker.onChange. UseFPicker(control: .managed(...))instead.
FPopover
-
Add
FPopoverControl. -
Add
FPopoverController.shown. -
Breaking Change
FPopover.shifttoFPopover.overflow. -
Breaking Remove
FPopover.controller. UseFPopover(control: .managed(...))instead. -
Fix
FPopovernot interrupting ongoing animations when toggled again.
FPopoverMenu
- Breaking Change
FPopoverMenu.shifttoFPopoverMenu.overflow. - Breaking Remove
FPopoverMenu.popoverController. UseFPopoverMenu(control: .managed(...))instead.
FPortal
-
Add
FPortalSpacing.spacing(...). -
Breaking Rename
FPortalBoxtoFPortalRect. -
Breaking Rename
FPortalChildBoxtoFPortalChildRect. -
Breaking Rename
FPortalShifttoFPortalOverflow. -
Breaking Change
FPortalShiftfrom a function to a class. While this makes custom shift implementations slightly more verbose, it allows the consts to synergize with dot shorthands. -
Breaking Rename
FPortalShift.alongtoFPortalShift.slide. -
Breaking Rename
FPortal.shifttoFPortal.overflow. -
Breaking Rename
FPortalSpacing.resolvetoFPortalSpacing.call.
FRadio
- Breaking Remove
FRadio.grouped(...). UseFSelectGroupItemMixin.radio(...)instead.
FResizable
-
Add
FResizable.region(...). -
Add
FResizableControl. -
Add
FResizableManagedControl. -
Breaking Remove
FResizable.controller. UseFResizable(control: .managed(...))orFResizable(control: .managedCascade(...))instead. -
Breaking Remove
FResizable.onChange. UseFResizable(control: .managed(...))instead.
FSelect & FMultiSelect
-
Add
FSelectControl. -
Add
FSelectItemMixin.item(...). -
Add
FSelectItemMixin.raw(...). -
Add
FSelectItemMixin.section(...). -
Add
FSelectItemMixin.richSection(...). -
Add
FSelectItem.item(...). -
Add
FSelect.contentGroupId. -
Add
FMultiSelect.contentGroupId. -
Breaking Rename
FSelect.anchortoFSelect.contentAnchor. -
Breaking Rename
FSelect.popoverConstraintstoFSelect.contentConstraints. -
Breaking Rename
FSelect.spacingtoFSelect.contentSpacing. -
Breaking Rename
FSelect.shifttoFSelect.contentOverflow. -
Breaking Rename
FSelect.offsettoFSelect.contentOffset. -
Breaking Rename
FSelect.hideRegiontoFSelect.contentHideRegion. -
Breaking Remove
FSelect.controller. UseFSelect(control: .managed(...))instead. -
Breaking Remove
FSelect.onChange. UseFSelect(control: .managed(...))instead. -
Breaking Remove
FSelect.initialValue. UseFSelect(control: .managed(...))instead. -
Breaking Remove
FSelectController(vsync: ..., popoverMotion: ...). UseFSelect(popoverControl: ...)instead. -
Breaking Remove
FSelectSearchFieldProperties.controller. UseFSelectSearchFieldProperties(control: .managed(...))instead. -
Breaking Rename
FMultiSelect.anchortoFMultiSelect.contentAnchor. -
Breaking Rename to .
FSelectGroup & FSelectTileGroup
-
Add
FSelectGroupItemMixin.checkbox(...). -
Add
FSelectGroupItemMixin.radio(...). -
Breaking Remove
FSelectGroup.controller. UseFSelectGroup(control: .managed(...))instead. -
Breaking Remove
FSelectGroup.onChange. UseFSelectGroup(control: .managed(...))instead. -
Breaking Remove
FSelectGroup.onSelect. -
Breaking Remove
FSelectGroupController. UseFMultiValueNotifierinstead. -
Breaking Rename
FSelectGroupItemtoFSelectGroupItemMixin.
FSelectMenuTile
-
Add
FSelectMenuTile.menuGroupId. -
Breaking Rename
FSelectMenuTile.shifttoFSelectMenuTile.menuOverflow. -
Breaking Rename
FSelectMenuTile.spacingtoFSelectMenuTile.menuSpacing. -
Breaking Rename
FSelectMenuTile.offsettoFSelectMenuTile.menuOffset. -
Breaking Rename
FSelectMenuTile.hideRegiontoFSelectMenuTile.menuHideRegion. -
Breaking Rename
FSelectMenuTile.onTapHidetoFSelectMenuTile.menuOnTapHide. -
Breaking Rename
FSelectMenuTile.focusNodetoFSelectMenuTile.menuFocusNode. -
Breaking Rename
FSelectMenuTile.onFocusChangetoFSelectMenuTile.menuOnFocusChange. -
Breaking Rename
FSelectMenuTile.traversalEdgeBehaviortoFSelectMenuTile.menuTraversalEdgeBehavior. -
Breaking Rename
FSelectMenuTile.barrierSemanticsLabeltoFSelectMenuTile.menuBarrierSemanticsLabel. -
Breaking Rename
FSelectMenuTile.barrierSemanticsDismissibletoFSelectMenuTile.menuBarrierSemanticsDismissible. -
Breaking Remove
FSelectMenuTile.selectController. UseFSelectMenuTile(selectControl: .managed(...))instead. -
Breaking Remove
FSelectMenuTile.popoverController. UseFSelectMenuTile(popoverControl: .managed(...))instead. -
Breaking Remove
FSelectMenuTile.onChange. UseFSelectMenuTile(selectControl: .managed(...))instead. -
Breaking Remove
FSelectMenuTile.initialValue. UseFSelectMenuTile(selectControl: .managed(...))instead. -
Breaking Remove
FSelectMenuTile.onSelect.
FSelectTileGroup
- Breaking Remove
FSelectTileGroupController. UseFMultiValueNotifierinstead. - Breaking Remove
FSelectGroupController. UseFMultiValueNotifierinstead. - Breaking Remove
FSelectTileGroup.selectController. UseFSelectTileGroup(control: .managed(...))instead. - Breaking Remove
FSelectTileGroup.onChange. UseFSelectTileGroup(control: .managed(...))instead. - Breaking Remove
FSelectTileGroup.onSelect.
FScaffold
- Breaking Remove
FToasterfromFScaffold. This was causing toasts to be cleared when switching between pages. UseFToasterdirectly instead.
FSheet
- Breaking Add
showFSheet(resizeToAvoidBottomInset: ...). Set to false to restore previous behavior. - Breaking Add
showFPersistentSheet(resizeToAvoidBottomInset: ...). Set to false to restore previous behavior. - Breaking Add
FModalSheetRoute.resizeToAvoidBottomInset. Set to false to restore previous behavior.
FSlider
-
Add
FSlider.onEnd. -
Add
FSliderMark.mark(...). -
Add
FSliderControl. -
Add
FSliderManagedControl. -
Breaking Rename
FSliderSelectiontoFSliderValue. -
Breaking Remove
FSliderController.tooltips. UseFSlider.tooltipControls. instead. -
Breaking Remove
FSliderTooltipsController. UseFSliderTooltipControlsinstead. -
Breaking Remove
FSlider.controller. UseFSlider(control: .managed(...))instead. -
Breaking Remove
FSlider.onChange. UseFSlider(control: .managed(...))instead. -
Breaking Remove
FSlider.initialSelection. UseFSlider(control: .managed(...))instead.
FTabs
-
Add
FTabControl. -
Add
FTabEntry.entry(...). -
Add
FTabs.mouseCursor. -
Breaking Remove
FTabs.controller. UseFTabs(control: .managed(...))instead. -
Breaking Remove
FTabs.initialIndex. UseFTabs(control: .managed(...))instead. -
Breaking Remove
FTabs.onChange. UseFTabs(control: .managed(...))instead. -
Breaking Rename
FTabController(initialIndex: ...)toFTabController(index: ...).
FTappable
- Change
FTappableto only update focused state when it has primary focus.
FTextField
-
Add
FFieldClearIconBuilder. -
Add
FObscureTextControl. -
Add
FTextFieldControl. -
Add
FTextField.control. -
Add
FTextField.clearIconBuilder. -
Add
FTextField.password.clearIconBuilder. -
Add
FTextFormField.control. -
Breaking Remove
FTextField.controller. UseFTextField(control: .managed(...))instead. -
Breaking Remove
FTextField.onChange. UseFTextField(control: .managed(...))instead. -
Breaking Remove
FTextField.initialText. UseFTextField(control: .managed(...))instead. -
Breaking Remove
FTextFormField.controller. UseFTextFormField(control: .managed(...))instead. -
Breaking Remove
FTextFormField.onChange. UseFTextFormField(control: .managed(...))instead. -
Breaking Remove
FTextFormField.initialText. UseFTextFormField(control: .managed(...))instead. -
Breaking Remove
FTextField.password(obscureTextController: ...). UseFTextField.password(obscureTextControl: ...)instead. -
Breaking Remove
FTextFormField.password(obscureTextController: ...). UseFTextFormField.password(obscureTextControl: ...)instead.
FTile & FTileGroup
-
Add
FTileMixin.selectMenu(...). -
Add
FTileMixin.selectMenuFromMap(...). -
Add
FTileMixin.selectMenuBuilder(...). -
Add
FTileMixin.tile(...). -
Add
FTileMixin.raw(...). -
Add
FTileGroupMixin.selectGroup(...). -
Add
FTileGroupMixin.selectGroupBuilder(...). -
Add
FTileGroupMixin.group(...). -
Add
FTileGroupMixin.builder(...). -
Add
FTileGroupMixin.merge(...). -
Breaking Remove
FTileMixin.selectMenu(selectController: ...). UseFTileMixin.selectMenu(selectControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenu(popoverController: ...). UseFTileMixin.selectMenu(popoverControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenu(onChange: ...). UseFTileMixin.selectMenu(selectControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenu(onSelect: ...). -
Breaking Remove
FTileMixin.selectMenu(initialValue: ...). UseFTileMixin.selectMenu(selectControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenuFromMap(selectController: ...). UseFTileMixin.selectMenuFromMap(selectControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenuFromMap(popoverController: ...). UseFTileMixin.selectMenuFromMap(popoverControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenuFromMap(onChange: ...). UseFTileMixin.selectMenuFromMap(selectControl: .managed(...))instead. -
Breaking Remove
FTileMixin.selectMenuFromMap(onSelect: ...). -
Breaking Remove
FTileMixin.selectMenuFromMap(initialValue: ...). Use instead.
FTimeField
-
Add
FTimeFieldControl. -
Add
FTimeField.picker(groupId: ...). -
Breaking Rename
FTimeField.shifttoFTimeField.overflow. -
Breaking Rename
FTimeField.picker(inputAnchor: ...)toFTimeField.picker(fieldAnchor: ...). -
Breaking Move
FTimeFieldStyle.popoverConstraintstoFTimeField.picker(constraints: ...). -
Breaking Remove
FTimeField.controller. UseFTimeField(control: .managed(...))instead. -
Breaking Remove
FTimeField.onChange. UseFTimeField(control: .managed(...))instead. -
Breaking Remove
FTimeField.initialTime. UseFTimeField(control: .managed(...))instead. -
Breaking Remove
FTimeFieldController(vsync: ..., popoverMotion: ...). UseFTimeField(popoverControl: ...)instead. -
Breaking Rename
FTimeFieldController(initialTime: ...)toFTimeFieldController(time: ...).
FTimePicker
-
Add
FTimePickerControl. -
Breaking Remove
FTimePicker.controller. UseFTimePicker(control: .managed(...))instead. -
Breaking Remove
FTimePicker.onChange. UseFTimePicker(control: .managed(...))instead. -
Breaking Rename
FTimePickerController(initial: ...)toFTimePickerController(time: ...). -
Fix
FTimePickerController.animateTo(...)not working with period-first locales (e.g. Korean).
FTooltip
-
Add
FTooltipControl. -
Add
FTooltipController.shown. -
Change
FTooltipto not be focusable. -
Change
FTooltip's focus-triggered behavior to only show if its immediate focusable descendant has primary focus. -
Breaking Rename
FTooltip.shifttoFTooltip.overflow. -
Breaking Remove
FTooltip.controller. UseFTooltip(control: .managed(...))instead. -
Fix
FTooltipnot interrupting ongoing animations when toggled again.
FToast
- Change
FToasterMotion.collapseCurve's default value fromeaseOutCubictoeaseOut.
Others
-
Add
FMultiValueControl. -
Add
FTypeaheadController.fromValue(...). -
Add
FTypeheadTextStyles. -
Breaking Remove
FSidebar.width. This field was never intended for public usage - UseFSidebarStyle.constraintsinstead. -
Deprecate
FValueNotifier. Please open an issue if there's a use-case that isn't covered. -
Deprecate
FValueNotifier.addValueListener(...). Please open an issue if there's a use-case that isn't covered. -
Deprecate
FValueNotifier.removeValueListener(...). Please open an issue if there's a use-case that isn't covered. -
Deprecate
FMultiValueNotifier.addUpdateListener(...). Please open an issue if there's a use-case that isn't covered. -
Deprecate
FMultiValueNotifier.removeUpdateListener(...). Please open an issue if there's a use-case that isn't covered. -
Fix generated style docs being malformed.