【问题标题】:How to make condition on dropdownMenu如何在下拉菜单上设置条件
【发布时间】:2023-02-21 12:14:50
【问题描述】:

我需要建议。我在 dropdownMenu 上设置了条件,起初它有效,但由于我更改了我的代码,它不再有效。 问题是用户不能选择菜单。

对不起,我不能用视频做记录。

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

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;
                            });
                          }
                        },
                      ),

【问题讨论】:

  • 您还没有解释当前代码的问题所在。
  • 嗯你是对的
  • 嘿,我可以再问一次吗?
  • 只需打开一个新的StackOverflow 上的问题。
  • 一个...所以必须打开一个新的

标签: flutter widget


【解决方案1】:

问题是你定义了selectedCategoryArea之内你的build方法:

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

所以,每一个setState它都会被重置。

要解决此问题,请在您的 _state 类中声明 selectedCategoryArea

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

【讨论】:

    【解决方案2】:

    setState 导致重建。

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

    您必须将变量移到构建方法之外。

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

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多