Flutter多选底部表单插件multi_select_bottom_sheetsx的使用

Flutter多选底部表单插件multi_select_bottom_sheetsx的使用

获取开始

这个项目是一个新的Flutter插件项目,它包括针对Android和/或iOS的平台特定实现代码。

对于Flutter开发的帮助,查看官方文档,其中包括教程、示例、移动开发指南以及完整的API引用。

图片预览

Preview Image Preview Image

完整示例

以下是multi_select_bottom_sheetsx插件的使用示例。该插件允许用户从底部弹出的表单中选择多个选项。

// ignore_for_file: unused_field
import 'package:flutter/material.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late final TextEditingController pickItemController;
  List<dynamic> initialList = [];
  final _formKey = GlobalKey<FormState>();

  [@override](/user/override)
  void initState() {
    super.initState();
    print(initialList);
    pickItemController = TextEditingController();
    setState(() {
      initialList = [
        'item 1',
        'item 2',
        'item 3',
        'item 4',
        'item 5',
        'item 6'
      ];
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    var size = MediaQuery.sizeOf(context);
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Container(
          height: size.height,
          width: size.width,
          padding: const EdgeInsets.all(5),
          color: const Color.fromARGB(255, 241, 224, 218),
          child: Column(
            children: [
              // 使用MultiSelectBottomSheet进行多选操作
              Form(
                key: _formKey,
                child: MultiSelectBottomSheet(
                  size: size,
                  title: "选择名称",
                  width: size.width,
                  enterList: initialList.toList(), // 初始列表
                  radiusContainerValue: 15, // 圆角半径
                  surfaceContainerColor: Colors.white, // 表单背景色
                  surfaceBottomColor: const Color.fromARGB(255, 241, 224, 218), // 底部背景色
                  backgroundColorItem: const Color(0x13936D47), // 项背景色
                  borderColordItem: Colors.brown, // 项边框颜色
                  primaryBrownColor: const Color.fromARGB(151, 121, 85, 72), // 主要棕色颜色
                  selectedItemColor: Colors.brown, // 选中项颜色
                  unSelectedItemStyle: const TextStyle(color: Color.fromARGB(184, 132, 107, 98)), // 未选中项样式
                  selectedItemStyle: const TextStyle(color: Colors.brown), // 选中项样式
                  titleTextStyle: const TextStyle(color: Colors.black), // 标题文本样式
                  icon: const Icon(Icons.close), // 关闭图标
                  textEditingController: pickItemController, // 文本控制器
                  iconShowBottonSheet: const Icon(Icons.search), // 显示底部表单的图标
                  errorText: "请选择一个元素", // 错误提示文本
                  isRequired: true, // 是否必填
                  erroTextStyle: const TextStyle(color: Colors.red), // 错误文本样式
                ),
              ),
              // 提交按钮
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    print(pickItemController.text); // 输出选中的值
                  }
                },
                child: const Text("提交"), // 提交按钮文本
              )
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter多选底部表单插件multi_select_bottom_sheetsx的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


multi_select_bottom_sheets 是一个 Flutter 插件,用于在底部弹出多选表单。它允许用户从一组选项中选择多个项目,并将选择的结果返回给应用程序。以下是如何在 Flutter 项目中使用 multi_select_bottom_sheets 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  multi_select_bottom_sheets: ^1.0.0  # 请检查最新版本

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

2. 导入插件

在需要使用多选底部表单的地方,导入 multi_select_bottom_sheets 插件。

import 'package:multi_select_bottom_sheets/multi_select_bottom_sheets.dart';

3. 创建选项列表

你需要创建一个选项列表,这些选项将显示在底部表单中。每个选项通常是一个包含 idname 的对象。

class Option {
  final int id;
  final String name;

  Option({required this.id, required this.name});
}

List<Option> options = [
  Option(id: 1, name: 'Option 1'),
  Option(id: 2, name: 'Option 2'),
  Option(id: 3, name: 'Option 3'),
  Option(id: 4, name: 'Option 4'),
];

4. 显示多选底部表单

使用 MultiSelectBottomSheet.show 方法来显示多选底部表单。你可以传递选项列表、选中的项目列表以及其他配置参数。

void showMultiSelectBottomSheet(BuildContext context) async {
  final selectedOptions = await MultiSelectBottomSheet.show(
    context,
    options: options,
    selectedOptions: [], // 初始选中的项目
    optionBuilder: (option) => option.name, // 如何显示选项
    title: 'Select Options', // 标题
    confirmText: 'Confirm', // 确认按钮文本
    cancelText: 'Cancel', // 取消按钮文本
  );

  if (selectedOptions != null) {
    // 处理选中的项目
    print('Selected Options: $selectedOptions');
  }
}

5. 在 UI 中触发底部表单

你可以在按钮的 onPressed 事件中调用 showMultiSelectBottomSheet 方法来显示底部表单。

ElevatedButton(
  onPressed: () => showMultiSelectBottomSheet(context),
  child: Text('Show Multi Select Bottom Sheet'),
)

6. 处理选中的项目

showMultiSelectBottomSheet 方法中,selectedOptions 将包含用户选择的项目列表。你可以根据需要进行处理,例如更新 UI 或保存数据。

完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 multi_select_bottom_sheets 插件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  final List<Option> options = [
    Option(id: 1, name: 'Option 1'),
    Option(id: 2, name: 'Option 2'),
    Option(id: 3, name: 'Option 3'),
    Option(id: 4, name: 'Option 4'),
  ];

  void showMultiSelectBottomSheet(BuildContext context) async {
    final selectedOptions = await MultiSelectBottomSheet.show(
      context,
      options: options,
      selectedOptions: [],
      optionBuilder: (option) => option.name,
      title: 'Select Options',
      confirmText: 'Confirm',
      cancelText: 'Cancel',
    );

    if (selectedOptions != null) {
      print('Selected Options: $selectedOptions');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Multi Select Bottom Sheet'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => showMultiSelectBottomSheet(context),
          child: Text('Show Multi Select Bottom Sheet'),
        ),
      ),
    );
  }
}

class Option {
  final int id;
  final String name;

  Option({required this.id, required this.name});
}
回到顶部