checkbox_grouped 1.8.1 icon indicating copy to clipboard operation
checkbox_grouped: ^1.8.1 copied to clipboard

flutter widget that grouping checkbox, recuperate the actual selection,support multiple selection

checkbox_grouped #

pub GitHub

* grouped (checkbox/radioButton)
* customisable grouped checkbox
* grouped chips
* grouped switch
* recuperate the actual selection
* make multiple selection
* dialogGroupedCheckbox
* list of groupedCheckbox
* list of customisable groupedCheckbox
* select/deselect items pragrammatically

Getting Started #

checkboxGrouped examples

Installing #

Add the following to your pubspec.yaml file:

dependencies:
	checkbox_grouped: ^1.8.1

Simple Usage #

Creating a basic SimpleGroupedCheckbox

    SimpleGroupedCheckbox<int>(
                    controller: controller,
                    itemsTitle: ["1" ,"2","4","5"],
                    values: [1,2,4,5],
                    groupStyle: GroupStyle(
                          activeColor: Colors.red,
                          itemTitleStyle: TextStyle(
                          fontSize: 13
                       )
                    ),
                    checkFirstElement: false,
                  )

Declare GroupController to get selection and enabled/disabled Items #

GroupController controller = GroupController();

GroupController

PropertiesDescription
isMultipleSelection(bool) enable multiple selection in grouped checkbox (default:false).
initSelectedItem(List) A Initialize list of values that will be selected in grouped.

Get current selection #

final selectedItems = controller.selectedItem;

enable items #

    controller.enableAll();

disable all items #

    controller.disableAll();

enabled items #

controller.enabledItemsByValues(List<T> values); 

controller.enabledItemsByTitles(List<String> itemsTitles); 

disable item #

controller.disabledItemsByValues(List<T> values);
controller.disabledItemsByTitles(List<String> items)

listener to changed values #

listener will be removed automatically when widget call dispose

controller.listen((v) {
      print("$v");
    });

select/selectValues #

select one item in single selection or multiple selection

selectValues work only in group when isMultiSelection is true

controller.select(value);
or
controller.selectValues([value]);

selectAll/selectValues #

select all or some items in multiple selection group

controller.selectAll();
or
controller.selectValues([values]);

deselectAll/deselectValues #

deselect all or some items in multiple selection group

controller.deselectAll();
or
controller.deselectValues([values]);

NOTICE

  • those method disabledItems and enabledItems has been removed
  • if you are using complex object in values , you need to implement operator == and hashcode

SimpleGroupedCheckbox

PropertiesDescription
controller(required) Group Controller to recuperate selectionItems and disable or enableItems.
activeColor(deprecated) The color to use when a CheckBox is checked.
itemsTitle(required) A list of strings that describes each checkbox button. Each label must be distinct.
itemsSubTitleA list of strings that describes second Text.
onItemSelectedCallback fire when the user make selection
disableItemsSpecifies which item should be disabled. The strings passed to this must match the Titles
values(required) Values contains in each element.
checkFirstElementmake first element in list checked.
isExpandableTitleenable group checkbox to be expandable.
groupTitleText title for group checkbox.
groupTitleStyle(deprecated) TextStyle of title for group checkbox.
helperGroupTitle(bool) hide/show checkbox in title to help all selection or de-selection,use it when you want to disable checkbox in groupTitle default:true.
groupTitleAlignment(Alignment) alignment of group title in group checkbox.
groupStyle(GroupStyle) the style that should be applied on GroupedTitle,ItemTile,SubTitle.

Customisable Checkbox Grouped #

Creating a basic CustomGroupedCheckbox

    CustomGroupedCheckbox<int>(
            controller:customController,
            groupTitle: "Custom GroupedCheckbox",
            itemBuilder: (ctx,index,value,isDisabled){
            return Card(
                child: Row(
                    children: <Widget>[
                        Expanded(
                            child: Align(
                                alignment: Alignment.centerLeft,
                                child: Text("$index"),
                            ),
                        ),
                        Opacity(
                              opacity: v?1:0,
                              child: Icon(Icons.check,
                                color: Colors.green,
                                size: 24,
                              ),
                         ),
                      ],
                   ),
                );
            },
            itemCount: 10,
            values: List<int>.generate(10, (i)=>i),
        )

Declare CustomGroupController to get selection ,enabled/disable items #

 CustomGroupController controller = CustomGroupController();

Get current selection #

final selectedItem = controller.selectedItem;

enable items #

    controller.enabledItems([value]);

disable items #

    controller.disabledItems([value]);

listen to changed values #

controller.listen((value){
 print(value);
})

CustomGroupedCheckbox

PropertiesDescription
controller(required) Custom Group Controller to recuperate selectionItems and disable or enableItems.
groupTitlewidget title for group checkbox.
itemBuilder(required) Called to build children.
values(required) Values contains in each element.
itemExtentThe extent the children are forced to have in the main axis
isScroll(bool) To make list of item scrollable

CustomGroupedCheckbox.grid

PropertiesDescription
controller(required) Custom Group Controller to recuperate selectionItems and disable or enableItems.
groupTitlewidget title for group checkbox.
itemBuilder(required) Called to build children.
values(required) Values contains in each element.
isScroll(bool) To indicate that the list of children scrollable
gridDelegate(SliverGridDelegate) a delegate that controls the layout of the children

Chip grouped Usage #

Creating a basic SimpleGroupedChips

SimpleGroupedChips<int>(
                    controller: controller,
                    values: [1,2,3,4,5,6,7],
                    itemTitle: ["1" ,"2","4","5","6","7"],
                    chipGroupStyle: ChipGroupStyle.minimize(
                         backgroundColorItem: Colors.red[400],
                         itemTitleStyle: TextStyle(
                         fontSize: 14,
                      ),
                    ),
                  )

Declare GroupController to get selection and enabled/disabled Items #

GroupController controller = GroupController();

GroupController

PropertiesDescription
isMultipleSelection(bool) enable multiple selection in grouped checkbox (default:false).
initSelectedItem(List) A Initialize list of values that will be selected in grouped.
chipGroupStyle(ChipGroupStyle) A Initialize list of values that will be selected in grouped.

Get current selection #

final selectedItems = controller.selectedItem;

enabled items #

controller.enabledItemsByValues(List<T> values); 

controller.enabledItemsByTitles(List<String> itemsTitles); 

disable item #

controller.disabledItemsByValues(List<T> values);
controller.disabledItemsByTitles(List<String> items)

SimpleGroupedChip

PropertiesDescription
controller(required) controller to recuperate selectionItems and disable or enableItems.
itemsTitle(required) A list of strings that describes each chip button. Each label must be distinct.
disabledItemsSpecifies which item should be disabled. The strings passed to this must match the Titles
values(required) Values contains in each element.
onItemSelectedCallback when users make selection or deselection
backgroundColorItem(deprecated) the background color for each item.
selectedColorItem(deprecated) the background color to use when item is selected.
textColor(deprecated) the color to use for each text of item.
selectedTextColor(deprecated) the color to use for the selected text of item.
selectedIcon(deprecated) the icon to use when item is selected.
disabledColor(deprecated) the Color that uses when the item is disabled
isScrollingenable horizontal scrolling.
chipGroupStyle(ChipGroupStyle) the style that uses to customize item chip

Switch grouped Usage #

Creating a basic SimpleGroupedSwitch

SimpleGroupedSwitch<int>(
                    controller: controller,
                    values: [1,2,4,5],
                    itemsTitle: ["1 " ,"2 ","4 ","5 ","6","7"],
                    groupStyle: SwitchGroupStyle(
                        itemTitleStyle: TextStyle(
                          fontSize: 16,
                          color: Colors.blue,
                       ),
                     activeColor: Colors.red,
                  ),  
             )

Declare GroupController to get selection and enabled/disabled Items #

GroupController controller = GroupController();

GroupController

PropertiesDescription
isMultipleSelection(bool) enable multiple selection in grouped checkbox (default:false).
initSelectedItem(List) A Initialize list of values that will be selected in grouped.

Get current selection #

final selectedItems = controller.selectedItem;

enabled items #

controller.enabledItemsByValues(List<T> values); 

controller.enabledItemsByTitles(List<String> itemsTitles); 

disable item #

controller.disabledItemsByValues(List<T> values);
controller.disabledItemsByTitles(List<String> items)

SimpleGroupedSwitch

PropertiesDescription
controller(required) Group Controller to recuperate selectionItems and disable or enableItems.
itemsTitle(required) A list of strings that describes each chip button. Each label must be distinct.
values(required) Values contains in each element.
disableItemsSpecifies which item should be disabled. The value passed to this must match the values list
onItemSelectedCall when users make selection or deselection
groupStyle(SwitchGroupStyle) the style that will customize text,switch

showDialogGroupedCheckbox #

display groupedCheckbox inside dialog return values selected

Creating a basic showDialogGroupedCheckbox

showDialogGroupedCheckbox(
                        context: context,
                        cancelDialogText: "cancel",
                        isMultiSelection: true,
                        itemsTitle: List.generate(15, (index) => "$index"),
                        submitDialogText: "select",
                        dialogTitle:Text("example dialog") ,
                        values: List.generate(15, (index) => index)
                      )

showDialogGroupedCheckbox

PropertiesDescription
dialogTitle(required) Text Widget that describe Title of dialog.
itemsTitle(required) Values contains in each element.
values(required) list of values.
initialSelectedValueslist of initial values that you want to be selected.
isDismissibleenable multiple selection.
cancelDialogText(string) label for cancelButton.
submitDialogText(string) label for submitButton.
isMultiSelectionenable multiple selection.

ListGroupedCheckbox #

display list of groupedCheckbox return all values selected

Declare ListGroupController to get all item selected or get item selected by group index #

ListGroupController controller = ListGroupController();

ListGroupController

PropertiesDescription
isMultipleSelectionPerGroup(List
initSelectedValues(List) A Initialize list of values on each group of checkbox that will be selected in group.

Get current selection #

  • get all selection
final selectedItems = controller.allSelectedItems;
  • get all selection by group
final selectedItems = controller.selectedItemsByGroupIndex(indexGroup);

enable items #

    controller.enableAll(int indexGroup);

disable all items #

    controller.disableAll(int indexGroup);

enabled items #

controller.enabledItemsByValues(int indexGroup,List<T> values); 

controller.enabledItemsByTitles(int indexGroup,List<String> itemsTitles); 

disable item #

controller.disabledItemsByValues(int indexGroup,List<T> values);
controller.disabledItemsByTitles(int indexGroup,List<String> items)

Creating a basic ListGroupedCheckbox

                ListGroupedCheckbox(
                        controller: listController,
                        groupTitles: List.generate(3, (index) => "groupe $index"),
                        values: List.generate(
                          3,
                          (i) =>
                              List.generate(5, (j) => "${(i + Random().nextInt(100)) * j}"),
                        ),
                        titles: List.generate(
                          3,
                          (i) => List.generate(5, (j) => "Title:$i-$j"),
                        ),
                        mapItemGroupedType: {
                          1: GroupedType.Chips,
                        },
                      )

ListGroupedCheckbox

PropertiesDescription
controller(required) manage the ListGroupedCheckbox.
groupTitles(required)Text title for group checkbox in each groupedCheckbox.
titles(required) A list of list of strings that describes each checkbox button. Each label must be distinct in groupedCheckbox.
values(required) Values contains in each element in each groupedCheckbox.
subTitlesA list of list strings that describes second Text in each groupedChckbox.
isScrollable(bool) make the parent widget scrollable or disable it (default:true).
onSelectedGroupChangedCallBack to get all selected items when users make select new items or deselect items
disabledValuesA nested list of string ,specifies which item should be disabled in each groupedCheckbox. The strings passed to this must match the Titles
titleGroupedAlignment(Alignment) align text title of each group of checkbox
titleGroupedTextStyle(TextStyle) style text title of each group
mapItemGroupedType(Map) define type of each group can be chips/switch/(checkbox or radio)

##ListCustomGroupedCheckbox

display list of groupedCheckbox return all values selected

Declare ListGroupController to get all item selected or get item selected by group index #

ListGroupController controller = ListGroupController();

ListCustomGroupController

PropertiesDescription
isMultipleSelectionPerGroup(List
initSelectedValuesByGroup(List) A Initialize list of values on each group of checkbox that will be selected in group.

Get current selection #

  • get all selection
  1. list
final selectedItems = controller.allSelectedItems;
  1. map
final selectedItems = controller.mapSelectedItems;
  • get all selection by group
final selectedItems = controller.selectedItemsByGroupIndex(indexGroup);

ListCustomGroupedCheckbox

PropertiesDescription
controller(required) manage the ListGroupedCheckbox.
children(required) list of CustomIndexedWidgetBuilder to return widget of items for each group,should be non null widgets
groupTitlesA list of String for group checkbox in each CustomGrouped.
groupTitlesWidgetA list of list of widgets that describes custom Title for each group.
listValuesByGroup(required) Values contains in each element in each CustomGroupedCheckbox.
isScrollable(bool) make the parent widget scrollable or disable it (default:true).
onSelectedGroupChangedCallBack to get all selected items when one of item hit it make select new items or deselect items
titleGroupedAlignment(Alignment) align text title of each group
titleGroupedTextStyle(TextStyle) style text for title of each group

basic example #

final controller =
ListCustomGroupController(isMultipleSelectionPerGroup: [true, false]);
final data = [
  List<_User>.generate(
    10,
        (i) => _User(
      name: faker.person.name(),
      email: faker.internet.email(),
    ),
  ),
  List<String>.generate(
    10,
        (i) => faker.person.name(),
  )
]
ListCustomGroupedCheckbox(
      controller: controller,
      onSelectedGroupChanged: (values) {
        print(values);
      },
      isScrollable: true,
      titleGroupedAlignment: Alignment.centerLeft,
      groupTitles: ["Users", "Names"],
      children: [
        CustomIndexedWidgetBuilder(
            itemBuilder: (ctx, index, selected, isDisabled) {
          return Card(
            margin: EdgeInsets.only(
              top: 5.0,
              bottom: 5.0,
            ),
            child: ListTile(
              tileColor: selected ? Colors.green[300] : Colors.white,
              title: Text(
                (data[0][index] as _User).name,
              ),
              subtitle: Text(
                (data[0][index] as _User).email,
              ),
              trailing: Opacity(
                opacity: selected ? 1 : 0,
                child: Icon(
                  Icons.check,
                  color: Colors.white,
                  size: 24,
                ),
              ),
            ),
          );
        }),
        CustomGridIndexedWidgetBuilder(
            itemBuilder: (ctx, index, selected, isDisabled) {
              return Card(
                color: selected ? Colors.green[300] : Colors.white,
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(
                    12.0,
                  ),
                ),
                margin: EdgeInsets.only(
                  top: 5.0,
                  bottom: 5.0,
                ),
                child: Stack(
                  children: [
                    Center(
                      child: Text(
                        data[1][index],
                        maxLines: 3,
                        overflow: TextOverflow.fade,
                      ),
                    ),
                    Positioned(
                      top: 5,
                      right: 8,
                      child: Opacity(
                        opacity: selected ? 1 : 0,
                        child: Icon(
                          Icons.check,
                          color: Colors.white,
                          size: 24,
                        ),
                      ),
                    ),
                  ],
                ),
              );
            },
            gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                      crossAxisCount: 3, 
                      crossAxisSpacing: 5.0,
                  )
              ),
      ],
      listValuesByGroup: data,
    )


MIT Licences

29
likes
130
pub points
93%
popularity

Publisher

unverified uploader

flutter widget that grouping checkbox, recuperate the actual selection,support multiple selection

Repository (GitHub)

Documentation

API reference

License

Icon for licenses.MIT (LICENSE)

Dependencies

auto_size_text, collection, flutter

More

Packages that depend on checkbox_grouped