Flutter下拉选择插件wee_drop_down的使用

Flutter下拉选择插件wee_drop_down的使用

特性

展示带有自定义颜色和选项列表的下拉菜单。

开始使用

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

dependencies:
  wee_drop_down: ^0.0.1

然后导入包:

import 'package:wee_drop_down/wee_drop_down.dart';

使用方法

以下是使用 WEEDropDownWidget 的完整示例代码:

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

// 定义一个实现 WeeDropDownItem 接口的类
class DDModel implements WeeDropDownItem {
  String display = "";
  var value;

  factory DDModel.fromJson(dynamic data) {
    return DDModel(value: data["value"], display: data["display"]);
  }

  [@override](/user/override)
  // 返回条目的背景颜色
  Color get barColor => Colors.yellow;

  [@override](/user/override)
  // 返回条目的显示文本
  String get displayValue => display;

  DDModel({required this.value, required this.display});

  static List<DDModel> DDModelFromListOfStrings(List<dynamic> values) {
    List<DDModel> listOfStateModels = [];
    if (values.length == 0) return listOfStateModels;
    values.forEach((element) {
      DDModel categoryModel = DDModel.fromJson(element);
      listOfStateModels.add(categoryModel);
    });
    return listOfStateModels;
  }
}

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  List<DDModel> states = [
    DDModel(value: "-1", display: "--State--")
  ];
  final stateFocus = FocusNode();

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text('You have pushed the button this many times:'),
            Text('$_counter', style: Theme.of(context).textTheme.headlineMedium),
            // 使用 WEEDropDownWidget 构建下拉菜单
            WEEDropDownWidget(
              itemList: states,
              selectTitle: "Select State",
              onChangeEventItem: (WeeDropDownItem we) {},
              primaryColor: Colors.red,
              meFocusNode: stateFocus,
              decorationColor: Colors.green,
            )
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}
1 回复

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


wee_drop_down 是一个 Flutter 插件,用于创建下拉选择框。它提供了简单易用的 API,可以帮助你快速实现下拉选择功能。以下是如何使用 wee_drop_down 插件的步骤:

1. 添加依赖

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

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

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

2. 导入插件

在你的 Dart 文件中导入 wee_drop_down 插件:

import 'package:wee_drop_down/wee_drop_down.dart';

3. 使用 WeeDropDown 组件

你可以在你的 Flutter 应用中使用 WeeDropDown 组件来创建下拉选择框。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WeeDropDown Example'),
        ),
        body: Center(
          child: WeeDropDown(
            items: ['Option 1', 'Option 2', 'Option 3'],
            onChanged: (String? value) {
              print('Selected: $value');
            },
            hint: 'Select an option',
          ),
        ),
      ),
    );
  }
}

4. 参数说明

WeeDropDown 组件提供了多个参数来定制下拉选择框的行为和外观:

  • items: 一个包含所有选项的列表。
  • onChanged: 当用户选择一个选项时触发的回调函数。
  • hint: 下拉选择框的提示文本。
  • value: 当前选中的值。
  • disabled: 是否禁用下拉选择框。
  • icon: 下拉选择框右侧的图标。
  • iconSize: 图标的大小。
  • iconColor: 图标的颜色。
  • style: 文本样式。
  • hintStyle: 提示文本的样式。
  • disabledHintStyle: 禁用状态下提示文本的样式。
  • underline: 下拉选择框的下划线。
  • isExpanded: 是否展开下拉选择框以填充可用空间。

5. 自定义样式

你可以通过传递不同的参数来自定义 WeeDropDown 的外观。例如,你可以更改提示文本的样式、图标颜色等:

WeeDropDown(
  items: ['Option 1', 'Option 2', 'Option 3'],
  onChanged: (String? value) {
    print('Selected: $value');
  },
  hint: 'Select an option',
  hintStyle: TextStyle(color: Colors.grey),
  icon: Icon(Icons.arrow_drop_down),
  iconSize: 24.0,
  iconColor: Colors.blue,
  style: TextStyle(color: Colors.black, fontSize: 16.0),
  underline: Container(
    height: 2,
    color: Colors.blue,
  ),
  isExpanded: true,
)

6. 处理选择事件

onChanged 回调函数会在用户选择一个选项时触发。你可以在回调函数中处理选择事件,例如更新状态或执行其他操作:

String? selectedValue;

WeeDropDown(
  items: ['Option 1', 'Option 2', 'Option 3'],
  onChanged: (String? value) {
    setState(() {
      selectedValue = value;
    });
  },
  hint: 'Select an option',
  value: selectedValue,
)

7. 完整示例

以下是一个完整的示例,展示了如何使用 WeeDropDown 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WeeDropDown Example'),
        ),
        body: Center(
          child: DropDownExample(),
        ),
      ),
    );
  }
}

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

class _DropDownExampleState extends State<DropDownExample> {
  String? selectedValue;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        WeeDropDown(
          items: ['Option 1', 'Option 2', 'Option 3'],
          onChanged: (String? value) {
            setState(() {
              selectedValue = value;
            });
          },
          hint: 'Select an option',
          value: selectedValue,
          hintStyle: TextStyle(color: Colors.grey),
          icon: Icon(Icons.arrow_drop_down),
          iconSize: 24.0,
          iconColor: Colors.blue,
          style: TextStyle(color: Colors.black, fontSize: 16.0),
          underline: Container(
            height: 2,
            color: Colors.blue,
          ),
          isExpanded: true,
        ),
        SizedBox(height: 20),
        Text('Selected: ${selectedValue ?? 'None'}'),
      ],
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!