如何在颤动中将默认值设置为下拉菜单?
Posted
技术标签:
【中文标题】如何在颤动中将默认值设置为下拉菜单?【英文标题】:How to set default value to dropdown in flutter? 【发布时间】:2022-01-16 06:50:18 【问题描述】:我想为下拉菜单提供一个默认值 (final province
)。
但我不知道该怎么做。
class ChooseAddress extends StatefulWidget
final province;
const ChooseAddress(Key? key,required this.provincee) : super(key: key);
@override
_ChooseAddressState createState() => _ChooseAddressState();
class _ChooseAddressState extends State<ChooseAddress>
ProvinceModel? _value;
Widget Province(double pageHeight, double pageWidth)
return Container(
height: 60,
width: pageWidth,
padding: EdgeInsets.symmetric(horizontal: pageWidth/20),
child: Directionality(
textDirection: TextDirection.rtl,
child: DropdownButtonHideUnderline(
child: DropdownButton(
menuMaxHeight: pageHeight/2,
elevation: 2,
value: _value,
items: _items.map((item)
return DropdownMenuItem(
alignment: Alignment.centerRight,
child: Text(item.name),
value: item,);
).toList(),
onChanged: (value)
setState(()
_value = value as ProvinceModel;
);
,
hint: AutoSizeText(
"choose province",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: pageWidth / 25),
),
),
),
)
);
注意final province
可以为空,所以我需要处理它。
我的省模式也是:
class ProvinceModel
late String name;
late int id;
ProvinceModel(this.name,this.id);
final province
就是 ProvinceModel 的String name
【问题讨论】:
“我想给一个默认值” - 然后将默认值分配给_value
- 现在是null
@pskink 我喜欢这样:value: widget.province ?? _value as ProvinceModel ,
但它不起作用并显示错误
【参考方案1】:
覆盖initState
以初始化_value
上的值。
@override
void initState()
super.initState();
_value = widget.province;
更多关于initState和DropdownButton的信息。
【讨论】:
以上是关于如何在颤动中将默认值设置为下拉菜单?的主要内容,如果未能解决你的问题,请参考以下文章