在 DropDownButton 中使用动态列表 |扑

Posted

技术标签:

【中文标题】在 DropDownButton 中使用动态列表 |扑【英文标题】:Use dynamic list in DropDownButton | Flutter 【发布时间】:2021-11-04 04:04:02 【问题描述】:

我的问题如下:

class Data 
  final String? image, title, link;
  final Color? color;

  Data(
    this.title,
    this.image,
    this.link,
    this.color,
  );



List dataList = [
  Data(
      title: "XXX",
      image: "XXX",
      link: "XXX",
      color: XXX),

...

我有这个类和列表来存储我的数据,但是我第一次使用这种方式来学习新东西。现在我遇到的问题是我完全无法使用列表中的数据创建一个 DropDownButton,因为我在那里有 Data()。

我尝试过这样的事情:

@override
  Widget build(BuildContext context) 
    return Container(
      child: Center(
        child: DropdownButton<String>(
          items: dataList.map((Map map) 
              return new DropdownMenuItem<String>(
                value: map["title"].toString(),
                child: new Text(
                  map["name"],
                ),
              );
            ).toList(),
        ),
      ),
    );
  

但我确信此选项不适用于我的示例。我想现在有办法向你寻求帮助。所以我的确切问题是,如何创建一个 DropDownMenu/Button,我的所有数据类的标题都显示在列表中。感谢您的帮助,谢谢。

【问题讨论】:

您想从 API 中获取数据并将其显示到下拉列表中吗? 我想在该下拉菜单中显示我的 dataList 中我的数据项的每个标题。请参阅第一个代码部分。所以每个标题都应该显示“XXX”。 【参考方案1】:

您的列表是通用类型 Data,但您将其视为 Map。

@override
  Widget build(BuildContext context) 
    return Container(
      child: Center(
        child: DropdownButton<String>(
          items: dataList.map((data) 
              return DropdownMenuItem<String>(
                value: data.title.toString(),
                child: Text(
                  data.name,
                ),
              );
            ).toList(),
        ),
      ),
    );
  

它现在应该可以工作了。

【讨论】:

以上是关于在 DropDownButton 中使用动态列表 |扑的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中手动显示/关闭 DropdownButton?

Future<DropDownButton> 项为空/空/相同值 |扑

在 DropdownButton 中选择 Item 会导致 Flutter 抛出错误

Flutter:如何将 DropdownButton 菜单图标对齐到最右边?

Flutter:按钮下方的 DropDownButton 项

DropdownButton 选择调用 Flutter 中其他字段的 onValidate 函数