Flutter多选下拉插件multiselect_dropdown_flutter的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter多选下拉插件multiselect_dropdown_flutter的使用

描述

这是一个简单的多选下拉菜单,具有全选搜索功能。你可以使用一个简单的列表或是一个映射列表。

MultiSelect Dropdown demo

功能特性

  • 使用MultiSelectDropdown处理映射列表。
  • 使用MultiSelectDropdown.simpleList处理简单列表。

开始使用

添加依赖

在你的pubspec.yaml文件中添加multiselect_dropdown_flutter作为依赖:

dependencies:
  multiselect_dropdown_flutter: ^最新版本号

然后执行flutter pub get来安装该包。

导入包

在需要使用的Dart文件顶部导入这个包:

import 'package:multiselect_dropdown_flutter/multiselect_dropdown_flutter.dart';

使用示例

下面提供了一个完整的示例代码,演示了如何在Flutter应用中使用multiselect_dropdown_flutter插件。

import 'package:flutter/material.dart';
import 'package:multiselect_dropdown_flutter/multiselect_dropdown_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'MultiSelect Dropdown demo',
      home: MultiSelectExample(),
    );
  }
}

class MultiSelectExample extends StatelessWidget {
  const MultiSelectExample({super.key});

  final List myList2 = const ['Dog', 'Cat', 'Mouse', 'Rabbit'];

  final List myList = const [
    {'id': 'dog', 'label': 'Dog'},
    {'id': 'cat', 'label': 'Cat'},
    {'id': 'mouse', 'label': 'Mouse'},
    {'id': 'rabbit', 'label': 'Rabbit'},
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('MultiSelect Dropdown Example')),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
          children: [
            MultiSelectDropdown(
              list: myList,
              initiallySelected: const [],
              onChange: (newList) {
                // your logic for handling selected items
                print(newList);
              },
              numberOfItemsLabelToShow: 2, // label to be shown for 2 items
              whenEmpty: 'Choose from the list', // text to show when selected list is empty
            ),
            const SizedBox(height: 20),
            MultiSelectDropdown.simpleList(
              list: myList2,
              initiallySelected: const [],
              onChange: (newList) {
                // your logic for handling selected items
                print(newList);
              },
              includeSearch: true,
              includeSelectAll: true,
              isLarge: true, // Modal size will be a little large
              width: 150, // Must be a definite number
              boxDecoration: BoxDecoration(
                borderRadius: BorderRadius.circular(15),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

在这个例子中,我们创建了两个MultiSelectDropdown实例:一个用于处理映射列表,另一个用于处理简单列表。每个下拉菜单都配置了不同的参数以展示其灵活性。例如,第一个下拉菜单指定了显示项数量和空状态文本;而第二个下拉菜单则启用了搜索和全选功能,并设置了较大的模态框尺寸及自定义装饰。

参数说明

以下是MultiSelectDropdown及其子类simpleList方法的主要参数解释:

Parameter Name Description
list 可选项列表
label 显示为选项的键名,默认是’label’
id 识别项目的键名,默认是’id’
onChange 回调函数,接收新选择的列表作为参数
numberOfItemsLabelToShow 显示的具体项目数量,超过此数目将显示’n个已选’
initiallySelected 初始选择的列表
boxDecoration 锚点元素的装饰
isLarge 下拉框大小
width 锚点和模态框宽度
whenEmpty 未选择任何项目时显示的文本
includeSelectAll 是否包含全选按钮,当值为true时包含
includeSearch 是否包含搜索选项,当值为true时包含
textStyle 锚点元素上的文本样式
duration 搜索选项中的防抖时间,默认300毫秒
checkboxFillColor 复选框填充颜色
splashColor 列表项点击时的涟漪效果颜色
listTextStyle 列表项文本样式

如果您发现这个包有用,请不要吝啬您的点赞支持,同时也可以在GitHub上提出问题或功能请求,以便作者能够持续改进和完善它。


更多关于Flutter多选下拉插件multiselect_dropdown_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter多选下拉插件multiselect_dropdown_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用multiselect_dropdown_flutter插件的示例代码。这个插件允许你在Flutter应用中实现多选下拉列表功能。

首先,你需要在你的pubspec.yaml文件中添加该插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  multiselect_dropdown_flutter: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Dart文件中使用MultiSelectDropdown组件。以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:multiselect_dropdown_flutter/multiselect_dropdown.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter MultiSelect Dropdown Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<String> _items = [
    'Apple',
    'Banana',
    'Cherry',
    'Date',
    'Elderberry',
    'Fig',
    'Grape',
  ];

  List<String> _selectedItems = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MultiSelect Dropdown Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            MultiSelectDropdown<String>(
              values: _items,
              selectedValues: _selectedItems,
              selectedValuesList: _selectedItems,
              hint: Text("Select your favorite fruits"),
              onChange: (values) {
                setState(() {
                  _selectedItems = values!;
                });
              },
              icon: Icon(Icons.arrow_downward),
              iconDisabledColor: Colors.grey,
              buttonTextStyle: TextStyle(color: Colors.deepPurple),
              chipDisplay: ChipDisplay(
                onDelete: (value) {
                  setState(() {
                    _selectedItems.remove(value);
                  });
                },
              ),
            ),
            SizedBox(height: 20),
            Text(
              'Selected items: $_selectedItems',
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. _items 是一个包含所有选项的字符串列表。
  2. _selectedItems 是一个存储用户选择项的列表。
  3. MultiSelectDropdown 是该插件提供的组件,用于显示多选下拉列表。
  4. values 参数接受所有可选值的列表。
  5. selectedValuesselectedValuesList 参数绑定到当前选中的值。
  6. onChange 回调在用户选择或取消选择项时被调用,并更新 _selectedItems 列表。
  7. chipDisplay 参数用于自定义选中项的显示样式,这里使用了默认的 ChipDisplay 并提供了删除回调。

运行这个示例,你会看到一个多选下拉列表,可以选择你喜欢的水果,并在选择后显示选中的项。

回到顶部