【问题标题】:How to get two values from a DropdownButtonFormField如何从 DropdownButtonFormField 中获取两个值
【发布时间】:2020-03-12 06:18:44
【问题描述】:

我需要帮助从 DropdownButtonFormField 中获取两个值。下拉表单项是从 Firestore 中的文档创建的列表。这是我的下拉菜单:

  return DropdownButtonFormField(
      isExpanded: true,
      decoration: textInputDecoration,
      value: _currentUser,

      hint: Text(
        'Select User',
      ),
      onChanged: (val) {
        setState(() => _currentUser = val);
        setState(() => UserDropdownList.some = val);
      },
      items: user.map((user){
        return DropdownMenuItem(
          value: user.userId,
          child: Text(user.name)
        );
      }).toList(),
    ); 

从我的下拉列表中,我将 userId 作为值,而在下拉列表中,名称显示为文本。但是,我想要第二个值,它可以将所选用户的名称与 userId 放在一起。请帮忙!

【问题讨论】:

    标签: firebase flutter dart dropdown


    【解决方案1】:

    dropdownmenuitem 只有一个value 的属性,您可以执行以下操作:

    items: user.map((user){
      return DropdownMenuItem(
        value: ${user.userId}_${user.name},
        child: Text(user.name)
         );
      }).toList(),
    

    这将为您提供包含用户 ID 和名称的值。

    【讨论】:

    • 谢谢。这行得通,它需要两个值。现在我的挑战是从结果字符串中获取单个值(userId 和 name)。就像我要设置状态一样。当前:setState(() => _currentUser = val);获取字符串。如果我能做到 setState(() => _currentUser = val.name);关于如何实现这一目标的任何想法?
    【解决方案2】:

    引用 Peter 指出的 split 方法

    大家可以试试

    items: user.map((user){
     return DropdownMenuItem(
    value: user["your_data"].toString() + " " + user["another_data"].toString(), 
    // output = your_data  another_data
    child: Text(user.name)
     );
      }).toList(),
    

    分别获取两个值

    print(_currentUser.split(" ")[0]); // will print your data
    
    print(_currentUser.split(" ")[1]); // will print another data
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      相关资源
      最近更新 更多