我正在尝试根据用户下拉输入降低产品(智能手机)价格并将价格传递到下一个屏幕。我的代码没有错误并且运行完美,但问题是,它仅基于一个 switch 语句(为下拉值全局选择的初始语句)降低了价格,因为setState
方法仅适用于更改屏幕上显示的下拉值,而不是在 switch 语句中含功能。有人可以帮我解决这个问题。我尝试了很多东西,但没有任何帮助。下面是我的代码(它很长,所以我在这里跳过了小部件构建部件和设计部件)。
值已经这样定义
double price = 18000;
String bdropDownValue = 'Less than 6 hours'; //initialvalue
final List<String> bItems = [
'Less than 6 hours',
'Less than 12 hours',
'Less than 24 hours'],
下拉按钮表单字段
DropdownButtonFormField(value: bdropDownValue,
items: bItems.map((bItems) {
return DropdownMenuItem(
value: bItems,
child: Text(bItems),
);
}).toList(),
onChanged: (String? value) {
setState(() {
bdropDownValue = value!;
});
},
),
/// button used to calculate next
TextButton(
onPressed: () {
calculator(bdropDownValue);
},
child: Text(
"confirm",
),
我正在使用这种方法来计算
void calculator(String bdropDownValue) {
switch (bdropDownValue) {
case 'Less than 6 hours':
price = price - 3000;
break;
case 'Less than 12 hours':
price = price - 1500;
break;
case 'Less than 24 hours':
price = price - 1000;
break;
}
并Navigator
在计算器方法中像这样使用
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => priceScreen(
price: price,
)));
}
}