Flutter仿拟态下拉菜单插件material_neumorphic_dropdown的使用

Flutter仿拟态下拉菜单插件material_neumorphic_dropdown的使用

简介

material_neumorphic_dropdownMaterial Neumorphic 小部件套件的一部分。它提供了带有仿拟态效果的下拉菜单组件,可以为您的 Flutter 应用程序添加现代且美观的设计。


使用方法

添加依赖

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

dependencies:
  material_neumorphic: ^x.x.x

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


基本用法

NeumorphicDropdownNeumorphicDropdownFormField 是两个主要的小部件,它们扩展了原生的 DropdownButtonDropdownButtonFormField,并增加了仿拟态风格。

属性说明

属性名 类型 描述
neumorphicStyle NeumorphicStyle? 自定义仿拟态样式
margin EdgeInsets? 下拉菜单的外边距
borderRadius BorderRadiusGeometry 边框圆角半径
depth double? 仿拟态深度(正值为凸起,负值为凹陷)
value dynamic 当前选中的值
items List<DropdownMenuItem> 下拉菜单选项列表
onChanged ValueChanged<dynamic>? 用户选择时触发的回调函数

示例代码

以下是一个完整的示例代码,展示如何使用 NeumorphicDropdownNeumorphicDropdownFormField

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

void main() => runApp(MyApp());

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

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

class _DemoPageState extends State<DemoPage> {
  String name = 'A'; // 当前选中的值

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          // 使用 NeumorphicDropdown
          NeumorphicDropdown(
            margin: const EdgeInsets.symmetric(vertical: 12),
            borderRadius: const BorderRadius.all(Radius.circular(12.0)),
            depth: -4,
            value: name,
            items: [
              DropdownMenuItem(
                child: Text('A'),
                value: 'A',
              ),
              DropdownMenuItem(
                child: Text('B'),
                value: 'B',
              ),
              DropdownMenuItem(
                child: Text('C'),
                value: 'C',
              ),
            ],
            onChanged: (value) {
              setState(() {
                name = value as String;
              });
            },
          ),

          // 使用 NeumorphicDropdownFormField
          NeumorphicDropdownFormField(
            margin: const EdgeInsets.symmetric(vertical: 12),
            borderRadius: const BorderRadius.all(Radius.circular(12.0)),
            depth: -4,
            value: name,
            items: [
              DropdownMenuItem(
                child: Text('A'),
                value: 'A',
              ),
              DropdownMenuItem(
                child: Text('B'),
                value: 'B',
              ),
              DropdownMenuItem(
                child: Text('C'),
                value: 'C',
              ),
            ],
            onChanged: (value) {
              setState(() {
                name = value as String;
              });
            },
          ),
        ],
      ),
    );
  }
}

更多关于Flutter仿拟态下拉菜单插件material_neumorphic_dropdown的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


material_neumorphic_dropdown 是一个仿拟态设计风格的下拉菜单插件,适用于 Flutter 应用。它结合了 Material Design 和 Neumorphism 设计风格,提供了一种现代且美观的下拉菜单体验。

安装

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

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

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

使用示例

以下是一个简单的使用示例,展示如何在 Flutter 应用中使用 material_neumorphic_dropdown 创建一个仿拟态风格的下拉菜单。

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

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

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

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

class _NeumorphicDropdownExampleState extends State<NeumorphicDropdownExample> {
  String? selectedValue;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        NeumorphicDropdown(
          items: [
            NeumorphicDropdownItem(value: 'Option 1', child: Text('Option 1')),
            NeumorphicDropdownItem(value: 'Option 2', child: Text('Option 2')),
            NeumorphicDropdownItem(value: 'Option 3', child: Text('Option 3')),
          ],
          onChanged: (value) {
            setState(() {
              selectedValue = value;
            });
          },
          value: selectedValue,
          hint: Text('Select an option'),
        ),
        SizedBox(height: 20),
        Text('Selected Value: $selectedValue'),
      ],
    );
  }
}
回到顶部