flutter 下拉菜单封装

Posted samnicole1809

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter 下拉菜单封装相关的知识,希望对你有一定的参考价值。

直接上代码,简单的下拉菜单封装

import package:flutter/cupertino.dart;
import package:flutter/material.dart;
import package:flutter_app/utils/CXColors.dart;

class DropDownSelect extends StatelessWidget {
  final String label;
  String value;
  final List<DropdownMenuItem> items;
  final ValueChanged onChanged;
  bool isText;

  DropDownSelect({Key key, this.label, this.value, this.items, this.onChanged, this.isText = false});

  @override
  Widget build(BuildContext context) {
    return new Container(
      height: 50.0,
      padding: EdgeInsets.fromLTRB(20.0, 0, 20.0, 0),
      decoration: new BoxDecoration(
        border: Border(
          bottom: BorderSide(color: CXColors.titleColor_cc, width: 0.5),
        ),
      ),
      child: Row(
        children: <Widget>[
          new Expanded(
            flex: 3,
            child: new Container(
              child: new Text(
                this.label,
                style: TextStyle(fontSize: 16.0, color: Colors.black87),
              ),
            ),
          ),
          new Expanded(
            flex: 8,
            child: Container(
              padding: EdgeInsets.only(top: 4.0),
              child: this.isText ? Text(this.value) : DropdownButton(
                icon: Icon(
                  Icons.arrow_downward,
                  color: Colors.black26,
                ),
                style: TextStyle(fontSize: 15.0, color: Colors.black54),
                iconSize: 22.0,
                isExpanded: true,
                underline: new Container(),
                hint: Text(请选择,
                  style: TextStyle(
                      color: Colors.black26
                  ),
                ),
                items: this.items,
                onChanged: onChanged,
                value: this.value,
              ),
            ),
          ),
        ],
      ),
    );
  }
}

使用方式:

// 声明items
List<DropdownMenuItem> _items = [
    new DropdownMenuItem(child: Text(), value: ),
    new DropdownMenuItem(child: Text(), value: ),
];
// 声明value,默认值是否
String _value = ;
// 使用Widget
DropDownSelect(
  label: 下拉菜单,
  items: _items,
  value: _value,
  isText: false,  // 为true时显示不可编辑文本,为false时显示下拉菜单,主要用于展示和编辑
  onChanged: (T) {
    setState(() {
      _value = T;
    });
  },
),

以上是关于flutter 下拉菜单封装的主要内容,如果未能解决你的问题,请参考以下文章

带有 ListTiles 和 Button 行的 Flutter 下拉菜单

我们如何在下拉菜单中更改 Flutter DropdownMenuItem 的宽度/填充?

悬停时显示/隐藏下拉菜单 Flutter for web

如何将 Firestore 文档列表绑定到 Flutter 中的下拉菜单?

试图让 Flutter/Dart DateTime 出现在下拉菜单中

Flutter listview下拉刷新,上拉加载更多封装