Flutter下拉选择插件joy_dropdowns的使用

Flutter下拉选择插件joy_dropdowns的使用

安装

1. 添加依赖

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  joy_dropdowns: ^1.0.0+1

2. 安装依赖

可以通过命令行安装包:

使用 pub 命令:

$ pub get

使用 Flutter 命令:

$ flutter pub get

3. 导入库

在 Dart 文件中导入:

import 'package:joy_dropdowns/joy_dropdowns.dart';

使用

基本用法

以下是一个基本的示例,展示如何使用 JoyDropDown 创建一个自定义的下拉菜单。

// 导入必要的库
import 'package:flutter/material.dart';
import 'package:joy_dropdowns/joy_dropdowns.dart';

void main() {
  runApp(const MaterialApp(
    home: HomePage(),
  ));
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Joy'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 使用 JoyDropDown 创建一个自定义下拉菜单
            JoyDropDown(
              overlayHeight: 300, // 下拉菜单的高度
              overlayWidth: 250, // 下拉菜单的宽度
              overlayOffset: const Offset(0, 5), // 下拉菜单的位置偏移
              overlayPosition: JoyOverlayPosition.bottom, // 下拉菜单出现的位置
              overlayWidget: Container(
                decoration: const BoxDecoration(
                  color: Colors.red,
                ),
                child: SingleChildScrollView(
                  physics: const ScrollPhysics(),
                  child: ListView.builder(
                    shrinkWrap: true,
                    itemCount: 4,
                    itemBuilder: (context, index) {
                      return InkWell(
                        onTap: () {
                          print('$index'); // 点击时打印索引
                        },
                        child: ListTile(
                          leading: const Icon(Icons.ac_unit),
                          title: Text('Item $index'),
                        ),
                      );
                    },
                  ),
                ),
              ),
              child: ElevatedButton(
                onPressed: () {},
                child: const Text('hover-me'), // 触发按钮
              ),
            ),
          ],
        ),
      ),
    );
  }
}

参数说明

  • overlayHeight: 下拉菜单的高度,如果为 null,则高度由按钮子组件决定。
  • overlayWidth: 下拉菜单的宽度,如果为 null,则宽度由按钮子组件决定。
  • overlayOffset: 下拉菜单的偏移位置。
  • overlayPosition: 下拉菜单出现的位置,可以设置为 bottom, left, top, right
  • overlayWidget: 下拉菜单的内容,可以是一个列表或其他自定义控件。
  • child: 按钮组件,可以是任何控件,例如 ElevatedButton

快速创建列表

如果你只需要简单的列表,可以使用 JoyDropDown.list 工厂方法。

JoyDropDown.list(
  overlayOffset: const Offset(0, 5),
  overlayPosition: JoyOverlayPosition.bottom,
  menu: JoyMenu(
    menuDecoration: BoxDecoration(
      boxShadow: [
        BoxShadow(
          color: Colors.black.withOpacity(0.5),
          blurRadius: 10,
          spreadRadius: 2,
        ),
      ],
      borderRadius: BorderRadius.circular(10),
    ),
    hoverColor: Color.fromARGB(255, 0, 116, 104),
    defaultColor: Colors.teal,
    items: items,
  ),
  child: ElevatedButton(
    onPressed: () {},
    child: const Text('hover-me'),
  ),
);

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

1 回复

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


joy_dropdowns 是一个 Flutter 插件,用于创建漂亮的下拉选择框。它提供了多种样式和自定义选项,可以帮助你轻松地在应用中实现下拉选择功能。以下是如何使用 joy_dropdowns 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  joy_dropdowns: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 joy_dropdowns 包:

import 'package:joy_dropdowns/joy_dropdowns.dart';

3. 使用 JoyDropdown

JoyDropdownjoy_dropdowns 插件中的主要组件。你可以通过以下方式使用它:

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _selectedValue;

  final List<String> _items = [
    'Option 1',
    'Option 2',
    'Option 3',
    'Option 4',
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('JoyDropdown Example'),
      ),
      body: Center(
        child: JoyDropdown<String>(
          items: _items,
          value: _selectedValue,
          onChanged: (String newValue) {
            setState(() {
              _selectedValue = newValue;
            });
          },
          hint: Text('Select an option'),
        ),
      ),
    );
  }
}

4. 自定义 JoyDropdown

JoyDropdown 提供了多种自定义选项,例如:

  • hint: 当下拉框没有选择任何选项时显示的提示文本。
  • icon: 下拉框右侧的图标。
  • style: 文本样式。
  • dropdownColor: 下拉框的背景颜色。
  • elevation: 下拉框的阴影高度。

例如,你可以这样自定义 JoyDropdown

JoyDropdown<String>(
  items: _items,
  value: _selectedValue,
  onChanged: (String newValue) {
    setState(() {
      _selectedValue = newValue;
    });
  },
  hint: Text('Select an option'),
  icon: Icon(Icons.arrow_drop_down),
  style: TextStyle(color: Colors.blue, fontSize: 16),
  dropdownColor: Colors.white,
  elevation: 2,
);

5. 处理选择事件

onChanged 回调函数会在用户选择一个选项时触发。你可以在这个回调中更新状态或执行其他操作。

onChanged: (String newValue) {
  setState(() {
    _selectedValue = newValue;
  });
  print('Selected: $newValue');
}

6. 完整示例

以下是一个完整的示例,展示了如何使用 JoyDropdown

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'JoyDropdown Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _selectedValue;

  final List<String> _items = [
    'Option 1',
    'Option 2',
    'Option 3',
    'Option 4',
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('JoyDropdown Example'),
      ),
      body: Center(
        child: JoyDropdown<String>(
          items: _items,
          value: _selectedValue,
          onChanged: (String newValue) {
            setState(() {
              _selectedValue = newValue;
            });
            print('Selected: $newValue');
          },
          hint: Text('Select an option'),
          icon: Icon(Icons.arrow_drop_down),
          style: TextStyle(color: Colors.blue, fontSize: 16),
          dropdownColor: Colors.white,
          elevation: 2,
        ),
      ),
    );
  }
}
回到顶部