如何为DropDownButtonFormField的“选定”项设置样式?

时间:2020-04-14 08:47:19

标签: flutter flutter-layout

我的DropDownButtonFormField的选定项目与项目列表中的项目不同。

这就是我想要做的

class CurrencyDropDown extends StatefulWidget {
  const CurrencyDropDown({
    Key key,
  }) : super(key: key);

  @override
  _CurrencyDropDownState createState() => _CurrencyDropDownState();
}

class _CurrencyDropDownState extends State<CurrencyDropDown> {
  String selected = "EUR";

  @override
  Widget build(BuildContext context) {
    return DropdownButtonFormField<String>(
      value: selected,
      hint: new Text("Select your currency...", textAlign: TextAlign.center),
      items: ["USD", "EUR", "CHF"]
          .map((label) => DropdownMenuItem(
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: <Widget>[
                    Image.asset(
                      'icons/currency/${label.toLowerCase()}.png',
                      package: 'currency_icons',
                      width: 30,
                    ),
                    Text(label),
                  ],
                ),
                value: label,
              ))
          .toList(),
      onChanged: (value) {
        setState(() => selected = value);
      },
    );
  }
}

并显示这样的小部件

      return SingleChildScrollView(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            SizedBox(
              height: 30,
              width: 200,
              child: CurrencyDropDown(),
            ),

这是选择时的外观 enter image description here

并显示选择。 enter image description here

我希望所选值具有与下拉列表相同的显示,并具有良好的间距和对齐方式。

1 个答案:

答案 0 :(得分:3)

您选择的项目与下拉菜单不同的原因是,您选择的字段中的行宽度被压缩。您可以通过添加DropdownButtonFormField

来解决此问题
isExpanded: true,