Skip to content

Latest commit

 

History

History
280 lines (204 loc) · 10.4 KB

File metadata and controls

280 lines (204 loc) · 10.4 KB

[2.4.1]

🛠 Maintenance

  • Upgraded flutter_lints to ^6.0.0 🔧
    • Updated static analysis rules to the latest version.
    • Resolved new lint warnings to ensure clean code quality and compatibility with the latest linting standards.

[2.4.0]

✨ New Features & Enhancements

  • Adopted Flutter RadioGroup API 🔄

    • Migrated from individual Radio widgets to RadioGroup for better radio button group management and improved state handling.
  • Added new RadioListTile properties for SDK compatibility 🆕

    • Exposed newly introduced properties: enabled, horizontalTitleGap, minLeadingWidth, minTileHeight, minVerticalPadding, radioBackgroundColor, radioInnerRadius, radioScaleFactor, statesController, radioSide, and titleAlignment.
    • Ensures compatibility with the latest Flutter SDK versions.

🐛 Bug Fixes

  • Fixed deprecation warning by migrating cacheExtent to scrollCacheExtent.

📝 Documentation

  • Trimmed package description to comply with pub.dev character limit guidelines.

[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