代码之家  ›  专栏  ›  技术社区  ›  siva kumar

如何在颤振中获得下拉按钮的选定索引

  •  25
  • siva kumar  · 技术社区  · 9 年前

    如何在颤振中获得下拉菜单的选择索引,

    在dropdownbutton中,没有获取选定索引的属性,如果有,如何获取选定索引和我的代码如下所示:

    new DropdownButton( hint:new Text("Select a users"),value: selectedUser,
    
                  onChanged: (String newValue) {
                    setState(() {
                      selectedUser = newValue;
                    });
                  },
                  items: userInfoToMap.map((ListOfUsers value) {
                    return new DropdownMenuItem<String>(
                        value: value.name,
                        child:new Text(value.name,style: new TextStyle(color: Colors.black))
                    );
                  })
                      .toList(),
                ),
    
              ),),
    
    2 回复  |  直到 9 年前
        1
  •  35
  •   kimoduor    5 年前

    您可能应该使用自定义模型对象(例如。 User )作为的类型 DropdownButton .

    video

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(new MyApp());
    }
    
    class User {
      const User(this.name);    
      final String name;
    }
    
    class MyApp extends StatefulWidget {
      State createState() => new MyAppState();
    }
    
    class MyAppState extends State<MyApp> {
      User selectedUser;
      List<User> users = <User>[User('Foo'), User('Bar')];    
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: new Scaffold(
            body: new Center(
              child: new DropdownButton<User>(
                hint: new Text("Select a user"),
                value: selectedUser,
                onChanged: (User newValue) {
                  setState(() {
                    selectedUser = newValue;
                  });
                },
                items: users.map((User user) {
                  return new DropdownMenuItem<User>(
                    value: user,
                    child: new Text(
                      user.name,
                      style: new TextStyle(color: Colors.black),
                    ),
                  );
                }).toList(),
              ),
            ),
          ),
        );
      }
    }
    
        2
  •  30
  •   Nico Westerdale    7 年前

    与Collin Jackson的回答类似,您可以简单地使用字符串列表并检查indexOf来设置值,这在某些情况下可能比创建用户类更好。 如果要设置初始值,请在定义时将用户设置为整数值。

    int _user;
    ...
    
    var users = <String>[
      'Bob',
      'Allie',
      'Jason',
    ];
    
    return new DropdownButton<String>(
      hint: new Text('Pickup on every'),
      value: _user == null ? null : users[_user],
      items: users.map((String value) {
        return new DropdownMenuItem<String>(
          value: value,
          child: new Text(value),
        );
      }).toList(),
      onChanged: (value) {
        setState(() {
          _user = users.indexOf(value);
        });
      },
    );