items_selector 2.3.0 copy "items_selector: ^2.3.0" to clipboard
items_selector: ^2.3.0 copied to clipboard

A Flutter package for selecting single or multiple items from a list or grid

2.3.0 #

โœจ New Features #

  • RadioSelector added! ๐Ÿ”˜

    • A widget for single-selection radio button lists, using RadioListTile under the hood.
    • Supports a list of RadioSelectorItem objects, which extend RadioListTile for individual customization.
    • Includes a RadioSelectorOption for global styling and layout properties like spacing and mainAxisAlignment.
    • Features an initialItem property for setting a default selection and a callback (OnSelectedRadioChanged) for handling selection changes.
  • CheckBoxSelector added! โœ…

    • A widget for multi-selection checkbox lists, using CheckboxListTile under the hood.
    • Accepts a list of CheckBoxSelectorItem objects, which extend CheckboxListTile for individual customization.
    • Provides a CheckBoxSelectorOption for global styling and layout properties like spacing and crossAxisAlignment.
    • Supports an initialItems property for pre-selecting multiple items and a callback (OnSelectedCheckboxChanged) for tracking selected items and their indices.

๐Ÿ“Œ Notes #

  • No breaking changes.
  • These new widgets expand the libraryโ€™s selection capabilities, complementing existing widgets like ListSelector and GridSelector.
  • Safe to upgrade from 2.2.0 without modifications to existing code.

2.2.0 #

โœจ New Features #

  • ListSelector.wheel added! ๐ŸŽก
    • Uses ListWheelScrollView under the hood.
    • Introduces WheelConfiguration, allowing customization of properties such as itemExtent, squeeze, perspective, and more.
    • Unlike other ListSelector constructors, it does not accept a direction property since ListWheelScrollView does not have one.

2.1.1 #

๐Ÿ›  Fixed #

  • Resolved an unused element warning in GridSelector:
    • Fixed the warning: "The declaration 'GridSelector._' isn't referenced."
    • Removed the unused private constructor declaration.
    • No functionality was affectedโ€”this was purely an internal cleanup.

๐Ÿ“Œ Notes #

  • No breaking changes.
  • This update improves code cleanliness but does not impact functionality.
  • Safe to upgrade from 2.1.0 without modifications.

2.1.0 #

๐Ÿš€ Added #

  • Generative constructor for ListSelector:

    • Previously, ListSelector could only be used via ListSelector.builder and ListSelector.separated.
    • Now, the main constructor (ListSelector()) is accessible.
    • This allows users to use Row or Column under the hood based on the direction property.
  • New flexConfiguration property for ListSelector:

    • ListSelector.builder and ListSelector.separated use listConfiguration (ListView-based).
    • ListSelector() now uses flexConfiguration, which supports Row/Column properties like:
      • mainAxisAlignment
      • crossAxisAlignment
      • mainAxisSize
      • textDirection
      • verticalDirection
      • textBaseline
      • clipBehavior
      • spacing

๐Ÿ”„ Changed #

  • ListSelector.builder and ListSelector.separated still work the same (using ListView under the hood).
  • The default behavior remains unchangedโ€”developers can now choose between ListView and Row/Column based on their needs.

๐Ÿ“Œ Migration Notes #

  • No breaking changes.
  • If you prefer to use Row/Column, you can now use the new generative constructor and pass a flexConfiguration.
  • If you are already using ListSelector.builder or ListSelector.separated, no changes are required.

2.0.0 #

๐Ÿš€ Added #

  • Introduced three new widgets:
    • ListSelector โ†’ Replaces SingleListItemSelector & MultiListItemSelector.
    • GridSelector โ†’ Replaces SingleGridItemSelector & MultiGridItemSelector.
    • WrapSelector โ†’ Replaces SingleWrapItemSelector & MultiWrapItemSelector.
  • ListSelector now provides two named constructors:
    • ListSelector.builder โ†’ Builds a list of selectable items.
    • ListSelector.separated โ†’ Adds separators between list items.
  • GridSelector introduces three named constructors mirroring Flutter's GridView:
    • GridSelector.builder
    • GridSelector.count
    • GridSelector.extent
  • All widgets now take a SelectedOption parameter, which accepts both SingleSelectOptions and MultiSelectOptions, offering a unified API.
  • Improved API consistency across all selectors, simplifying usability.

๐Ÿ”„ Changed #

  • ListSelector always uses ListView under the hood instead of switching between Row/Column and ListView.
  • GridSelector uses a sealed class configuration (GridConfiguration), requiring the correct subtype (BuilderConfiguration, CountConfiguration, or ExtentConfiguration) for each named constructor.
  • Codebase refactored for better readability and maintainability.

โš ๏ธ Migration Guide #

This update includes breaking changes that require adjustments to your existing code.

  • Replace old widgets with new ones:
    • SingleListItemSelector โ†’ ListSelector.builder or ListSelector.separated
    • MultiListItemSelector โ†’ ListSelector.builder or ListSelector.separated
    • SingleGridItemSelector โ†’ GridSelector.builder, GridSelector.count, or * GridSelector.extent*
    • MultiGridItemSelector โ†’ GridSelector.builder, GridSelector.count, or * GridSelector.extent*
    • SingleWrapItemSelector โ†’ WrapSelector
    • MultiWrapItemSelector โ†’ WrapSelector
  • Use the new SelectedOption parameter instead of separate selection options.
  • Ensure GridSelector uses the correct GridConfiguration subtype for its named constructors.
  • ListSelector.separated requires an additional separatorBuilder parameter.

1.1.0 #

Added #

  • listConfiguration property introduced in SingleListItemSelector & MultiListItemSelector.
    • This allows users to switch from Row/Column to ListView, providing greater flexibility and access to ListView features such as scrolling behavior, physics, controllers, and more.
    • If listConfiguration is not provided, the default behavior remains unchanged.

Changed #

  • Refactored codebase for better readability and maintainability. No functional changes were made.
  • Updated example files to reflect recent improvements and demonstrate new capabilities.

Migration Notes #

  • No breaking changes. Upgrading to this version will not cause any compilation errors or issues.

1.0.1 #

Fixed #

  • Corrected the image URL in the README to properly display on pub.dev.

This update does not change any functionality but ensures that documentation is correctly presented to users.

1.0.0 #

Added #

  • Introduced SingleWrapItemSelector and MultiWrapItemSelector widgets, providing flexible item arrangement using the Wrap layout.

Changed #

  • Removed default padding applied to all widgets to give users more control over layout spacing.
  • Removed SingleChildScrollView from SingleListItemSelector and MultiListItemSelector to avoid unintended scrolling behavior.

Fixed #

  • General improvements to layout consistency and flexibility.

0.2.0 #

Changed #

  • Refactored SingleGridItemSelector & MultiGridItemSelector
    • Properties related to GridView (such as gridDelegate, controller, physics, etc.) have been removed from SingleGridItemSelector and MultiGridItemSelector and moved into a new class: GridConfiguration.
    • Both widgets now accept a GridConfiguration instance instead of multiple individual GridView-related properties.

Added #

  • New GridConfiguration class
    • Encapsulates all GridView configuration properties, making SingleGridItemSelector and MultiGridItemSelector cleaner and more modular.
    • Simplifies the API by grouping all grid-related options into a single parameter.

Migration Guide #

  • Instead of passing gridDelegate, controller, physics, etc., directly to SingleGridItemSelector or MultiGridItemSelector, create a GridConfiguration instance and pass it as a parameter.

    Before:

    SingleGridItemSelector<int>(
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      padding: EdgeInsets.all(8),
      controller: ScrollController(),
      ...
    )
    
    MultiGridItemSelector<int>(
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
      padding: EdgeInsets.symmetric(horizontal: 16),
      controller: ScrollController(),
      ...
    )
    

    After:

    SingleGridItemSelector<int>(
      gridConfiguration: GridConfiguration(
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      padding: EdgeInsets.all(8),
      controller: ScrollController(),
      ...
     )
    )
    
    MultiGridItemSelector<int>(
      gridConfiguration: GridConfiguration(
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
      padding: EdgeInsets.symmetric(horizontal: 16),
      controller: ScrollController(),
      ...
      )
    )
    

0.1.2 #

  • Add examples

0.1.1 #

  • Updated README.md for better clarity.

0.0.1 #

  • release initial version
15
likes
140
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for selecting single or multiple items from a list or grid

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on items_selector