flutter DropdownButton的基本使用和会出现的问题

本文分享了在Flutter中如何创建一个带有圆角边框的DropdownButton组件,并详细介绍了其样式设置、菜单项配置及回调函数的使用。通过示例代码,解决了在实现过程中遇到的文本颜色控制难题。

dropdwonbutton 是flutter 自带的菜单组按钮,我在开发中需要做一个圆角边框按钮,点击显示菜单栏,期间出现了一些小问题,我们先上代码,把问题直接显示在代码上面

Container(
                  margin: EdgeInsets.fromLTRB(16, 4, 8, 4),
                    child: new Container(
                      padding: EdgeInsets.fromLTRB(4, 4, 0, 4),
                      //设置圆角边框     
                      decoration: new BoxDecoration(
                        border: new Border.all(color: Color(0xFF00C8A5),width: 0.5),
                        borderRadius: new BorderRadius.vertical(top: Radius.elliptical(4, 4),bottom:Radius.elliptical(4, 4) ),
                        color: Color(0xFF00C8A5)
                      ),
                      child: new DropdownButton(
                        items: dropdownItems(),//设置菜单组,
                        onChanged: (value) {//按钮菜单选择回调
                          setState(() {
                            _showContent = value;

                          });
                        },
                        //提示控件,你可以弄成文字或者是图片(如果有value的化value的文字会显示在最上面,这就是问题的所在,这个文字的颜色是items控件里面的颜色,这样会导致按钮颜色不能控制,唯一的办法目前就是去掉value)
                        hint: new Text(_showContent,style: TextStyle(color: Colors.white),),
                        isDense: true,
                        //去掉它
                        value:_showContent,
                        underline: new Container(),
                        style: TextStyle(color: Colors.white),
                        iconEnabledColor:Colors.white ,
                        iconDisabledColor: Colors.white ,
                      ),
                    ),
                )
//设置itmes组。。。。
dropdownItems(){
    List<DropdownMenuItem<String>> list = new List();
    dropdownData.forEach((key){
      var value = payTypeData[key];
      list.add(
        new DropdownMenuItem(
            child: new Container(
                color: Colors.white,
                child: new Text(key,style: TextStyle(color: Colors.black),),
            ),value: key
        ),
      );
    });

    return list;
  }

 

### 如何在 Flutter使用 `DropdownButton2` 示例 为了创建一个带有自定义样式的下拉菜单,在 Flutter 应用程序中可以采用 `dropdown_button2` 这一插件[^2]。 #### 导入依赖项 首先,需确保项目中的 pubspec.yaml 文件已添加了对 `dropdown_button2` 插件的支持。接着执行命令来安装新的依赖关系: ```yaml dependencies: flutter: sdk: flutter dropdown_button2: ^0.3.0 # 版本号可能有所不同,请查阅最新文档获取确切版本 ``` #### 创建 DropdownButton2 小部件 下面是一个简单的例子展示如何构建并配置 `DropdownButton2`: ```dart import 'package:flutter/material.dart'; import 'package:dropdown_button2/dropdown_button2.dart'; class CustomDropDown extends StatefulWidget { @override _CustomDropDownState createState() => _CustomDropDownState(); } class _CustomDropDownState extends State<CustomDropDown> { String? selectedValue; List<String> items = ['Item1', 'Item2', 'Item3']; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Dropdown Button Example')), body: Center( child: DropdownButtonFormField2( decoration: InputDecoration( isDense: true, contentPadding: EdgeInsets.zero, border: OutlineInputBorder(), ), hint: const Text('Select Item'), icon: Icon(Icons.arrow_drop_down), buttonHeight: 40, itemHeight: 40, onChanged: (value){ setState(() { selectedValue=value; }); }, onSaved: (newValue) {}, value: selectedValue, items: items.map((item) => DropdownMenuItem<String>( value: item, child: Text(item, style: TextStyle(fontSize: 14),), ) ).toList(), ), ), ); } } ``` 此代码片段展示了如何通过设置不同的属性来自定义外观以及行为方式,比如改变提示文字、图标样式等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值