Search packages, repositories and app categories

flutter_multiselect cover
Package detailsv1.0.2

flutter_multiselect

Flutter package for multi-select UI widget, that compatible to both iOS and Android and uses neutral design.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
279
Likes
51
Pub points
150

Install package

flutter pub add flutter_multiselect

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter package providing a cross-platform multi-select UI widget compatible with iOS and Android, featuring a neutral design. It enables users to select multiple items from a list with intuitive interactions, suitable for forms, filters, and tagging interfaces. The widget is designed for consistency across platforms including web, macOS, Windows, and Linux. Built with accessibility and performance in mind, it integrates seamlessly into existing Flutter apps.

Use cases

  • Form inputs with multiple choices
  • Filtering options in dashboards
  • Tag selection for content categorization
  • User preference settings
  • Dynamic form fields

Key features

  • Cross-platform compatibility
  • Neutral, modern design
  • Intuitive multi-selection gestures
  • Support for all major Flutter platforms
  • Accessible via semantic labels
  • Customizable chip styling

Suitable for

  • Developers building inclusive, platform-agnostic apps
  • Apps requiring flexible selection patterns
  • Design systems prioritizing consistency
  • Teams using Flutter for full-stack development
  • Projects needing lightweight, reusable components

Considerations

  • Limited built-in validation
  • No native support for keyboard navigation
  • Requires manual handling of selection state
  • May need additional styling for complex themes
  • Not optimized for very large datasets without pagination

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

flutter_multiselect

Flutter package for multi-select UI widget

pub package

Android and iOS screenshot- screenshot

Getting Started

  • Add the package into pubspec.yaml
dependencies:
  flutter_multiselect:
  • Import in your code
import 'package:flutter_multiselect/flutter_multiselect.dart';

Why? :wrench:

By default, there is no UI control for multi-select in iOS and Android, and my widget can be used to bridge this gap.

Example without customization :one:

child: MultiSelect(
  autovalidate: false,
  titleText: "Countries",
  validator: (value) {
    if (value == null) {
      return 'Please select one or more option(s)';
    }
  },
  errorText: 'Please select one or more option(s)',
  dataSource: [
    {
      "display": "Australia",
      "value": 1,
    },
    {
      "display": "Canada",
      "value": 2,
    },
    {
      "display": "India",
      "value": 3,
    },
    {
      "display": "United States",
      "value": 4,
    }
  ],
  textField: 'display',
  valueField: 'value',
  filterable: true,
  required: true,
  value: null,
  onSaved: (value) {
    print('The saved values are $value');
  }
),

Example with customization :two:

Check the colors and text to see the changes that it makes to the modal interface

child: MultiSelect(
    //--------customization selection modal-----------
    buttonBarColor: Colors.red,
    cancelButtonText: "Exit",
    titleText: "Custom Title",
    checkBoxColor: Colors.black,
    selectedOptionsInfoText: "Selected custom text (tap to remove)",
    selectedOptionsBoxColor: Colors.green,
    autovalidate: true,
    maxLength: 5, // optional
    //--------end customization selection modal------------
    validator: (dynamic value) {
      if (value == null) {
        return 'Please select one or more option(s)';
      }
      return null;
    },
    errorText: 'Please select one or more option(s)',
    dataSource: [
      {"name": "Afghanistan", "code": "AF"},
      {"name": "Åland Islands", "code": "AX"},
      {"name": "Albania", "code": "AL"},
    ],
    textField: 'name',
    valueField: 'code',
    filterable: true,
    required: true,
    onSaved: (value) {
      print('The saved values are $value');
    }),
    change: (value) {
      print('The selected values are $value');
    })

and of course you can check the full list of the parameters to personalize your modal!

Here, the complete list of parameters to modify the selection modal :clipboard:

Type Parameter
Color buttonBarColor
String cancelButtonText
IconData cancelButtonIcon
Color cancelButtonColor
Color cancelButtonTextColor
String saveButtonText
IconData saveButtonIcon
Color saveButtonColor
Color saveButtonTextColor
String clearButtonText
IconData clearButtonIcon
Color clearButtonColor
Color clearButtonTextColor
String deleteButtonTooltipText
IconData deleteIcon
Color deleteIconColor
Color selectedOptionsBoxColor
String selectedOptionsInfoText
Color selectedOptionsInfoTextColor
IconData checkedIcon
IconData uncheckedIcon
Color checkBoxColor
Color searchBoxColor
String searchBoxHintText
Color searchBoxFillColor
IconData searchBoxIcon
String searchBoxToolTipText
Size responsiveDialogSize

Categories

Source repository

Projects using this package

No data available yet.