如何在下拉菜单上创建条件



我需要建议。我已经在下拉菜单上做了条件,起初它是有效的,但是自从我在我的代码中做了一个改变,它就不工作了。问题是用户无法选择菜单。

这是我到目前为止写的代码:

在BuildContext下面有一个变量,在最上面:

Widget build(BuildContext context) {
String selectedCategoryFood = '';

然后是下拉菜单:

child: DropdownButton<String>(
icon: Padding(
padding: const EdgeInsets.only(right: 10, top: 8),
child: SvgPicture.asset(
Assets.icons.dropdownIcon.path,
fit: BoxFit.scaleDown,
),
),
style: body1(color: ColorName.blackPrimary),
items: <String>[
'Burger',
'Ice Cream',
].map((String value) {
return DropdownMenuItem(
value: value,
child: Text(value),
);
}).toList(),
hint: Padding(
padding: const EdgeInsets.only(top: 8, left: 10),
child: Text(
style: body1(color: ColorName.grey),
selectedCategoryFood.isEmpty
? 'Category Food'
: selectedCategoryFood),
),
borderRadius: BorderRadius.circular(10),
underline: const SizedBox(),
isExpanded: true,
onChanged: (value) {
if (value != null) {
setState(() {
selectedCategoryFood = value;
});
}
},
),

问题是您已经在您的build方法中定义了selectedCategoryFood:

Widget build(BuildContext context) {
var selectedCategoryFood = "";

每一个setState都被重置

要解决这个问题,在_state类中声明selectedCategoryFood:

class _TestState extends State<Test> {
var selectedCategoryFood = "";
@override
Widget build(BuildContext context) {
return Scaffold(

setState引起重建

将变量初始化放在构建方法中。

你必须把变量移到构建方法之外。

String selectedCategoryFood = '';
Widget build(BuildContext context) {...}

最新更新