简体   繁体   English

Flutter:如何使用 DropDownButton?

[英]Flutter: how to use DropDownButton?

i'm trying to build a DropdownButton widget of multiple elements, but I'm miserably failing even if I read multiple tutorials on the Internet.我正在尝试构建一个包含多个元素的DropdownButton小部件,但是即使我在 Internet 上阅读了多个教程,我也失败了。

How can I go about creating a simple DropdownButton of 4 elements ?我怎样才能创建一个简单的 4 个元素的 DropdownButton ?

Thanks for your time谢谢你的时间

Here's what I tried:这是我尝试过的:

 import 'package:flutter/material.dart'; class ForgotPassScreen extends StatefulWidget { @override _ForgotPassScreenState createState() => _ForgotPassScreenState(); } class _ForgotPassScreenState extends State<ForgotPassScreen> { int _value = 0; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Dropdown Button"), ), body: Container( padding: EdgeInsets.all(20.0), child: DropdownButton( value: _value, items: [ DropdownMenuItem( child: Text("Item 0"), value: 0, ), DropdownMenuItem( child: Text("First Item"), value: 1, ), DropdownMenuItem( child: Text("Second Item"), value: 2, ), DropdownMenuItem( child: Text("Third Item"), value: 3, ), DropdownMenuItem( child: Text("Fourth Item"), value: 4, ) ], onChanged: (value) { setState(() { _value = value; }); }), )); } }

So this code has basically 3 parts to it.所以这段代码基本上有 3 部分。 First is the object which stores the icon and the title.首先是存储图标和标题的对象。 The second is the list of these objects, you can have as many as you want.第二个是这些对象的列表,您可以拥有任意数量的对象。 And third is the button itself which constructs the boxes第三个是构建框的按钮本身
OBJECT目的

class Choice {
  const Choice({this.title, this.icon});

  final String title;
  final IconData icon;
}

LIST列表

List<Choice> choices = <Choice>[
      const Choice(title: 'Profile', icon: Icons.account_circle),
      const Choice(title:"Log in", icon: Icons.exit_to_app),
    ]

POPUP BUTTON弹出按钮

          PopupMenuButton<Choice>(
            color:Colors.white,
            onSelected: onItemMenuPress,
            itemBuilder: (BuildContext context) {
              return choices.map((Choice choice) {
                return PopupMenuItem<Choice>(
                    value: choice,
                    child: Row(
                      children: <Widget>[
                        Icon(
                          choice.icon,
                          color:Colors.black
                        ),
                        Container(
                          width: 10.0,
                        ),
                        Text(
                          choice.title,
                          style: TextStyle(),
                        ),
                      ],
                    ));
              }).toList();
            },
          )

This is the best way to create the button as you can modify it without having to change every single piece of code这是创建按钮的最佳方式,因为您可以修改它而无需更改每一段代码

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM