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

A Flutter package providing flexible item selection widgets with support for multiple layouts including list, grid, wrap, radio button, and checkbox list selectors, allowing you to choose the perfect [...]

[2.3.1] #

📝 Documentation #

  • Fixed broken image links in README.md by replacing GitHub URLs with raw image links.
  • Ensured all widgets’ demo GIFs render correctly on pub.dev.

[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:
    • SingleListItemSelectorListSelector.builder or ListSelector.separated
    • MultiListItemSelectorListSelector.builder or ListSelector.separated
    • SingleGridItemSelectorGridSelector.builder, GridSelector.count, or * GridSelector.extent*
    • MultiGridItemSelectorGridSelector.builder, GridSelector.count, or * GridSelector.extent*
    • SingleWrapItemSelectorWrapSelector
    • MultiWrapItemSelectorWrapSelector
  • 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
14
likes
130
points
71
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package providing flexible item selection widgets with support for multiple layouts including list, grid, wrap, radio button, and checkbox list selectors, allowing you to choose the perfect selection style for your app's needs.

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on items_selector