zoukankan      html  css  js  c++  java
  • 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,  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;
        });
      },
    ),
  • 相关阅读:
    【分布式锁】RedLock 实现分布式锁
    【反射】遍历对象属性名与值
    【ABP.Net】2.多数据库支持&&初始化数据库
    【ABP.Net】1.创建项目&介绍框架结构
    【Vue-Cli3.0】【2】渲染
    【nuget】PackageReference
    【Vue-Cli3.0】【1】创建一个Vue-Cli3.0的项目
    【干货】干货篇
    踩坑记录-Redis(Windows)的getshell
    极致CMS存储XSS|前台打后台COOKIE漏洞复现
  • 原文地址:https://www.cnblogs.com/SamNicole1809/p/12100199.html
Copyright © 2011-2022 走看看