【问题标题】:A value of type 'Object?' can't be assigned to a variable of type 'String' and The left operand can't be null, so the right operand is never executed“对象?”类型的值不能分配给“String”类型的变量并且左操作数不能为空,因此永远不会执行右操作数
【发布时间】:2021-09-26 16:38:04
【问题描述】:

我的颤振项目中有 2 个错误:

“对象?”类型的值不能分配给“字符串”类型的变量。 尝试更改变量的类型,或将右侧类型转换为“字符串”。

左边的操作数不能为空,所以右边的操作数永远不会被执行。 尝试删除运算符和正确的操作数。

我发生错误的代码如下所示:

DropdownButtonFormField(
                    value: _currentSugars ?? userData.sugars, <-- and here **userData.sugars** (2)
                    decoration: textInputDecoration,
                    items: sugars.map((sugar) {
                      return DropdownMenuItem(
                        value: sugar,
                        child: Text('$sugar sugars'),
                      );
                    }).toList(),
                    onChanged: (val) => setState(() => _currentSugars= val),  <-- in **val** (1)
                  ),

Update 1

任何帮助将不胜感激。

【问题讨论】:

    标签: android flutter mobile


    【解决方案1】:

    从上面的代码看来_currentSugars 有一个String 类型。由于val 实际上是Object? 类型,所以无法执行_currentSugars= val 赋值。

    此外,由于String 类型的变量不能是null,编译器会告诉您,在表达式_currentSugars ?? userData.sugars 中,它的右侧(userData.sugars)永远不会被执行。

    你可以试试改成类似

    DropdownButtonFormField<String>(
                    value: _currentSugars ?? userData.sugars, 
                    decoration: textInputDecoration,
                    items: sugars.map((sugar) {
                      return DropdownMenuItem(
                        value: sugar,
                        child: Text('$sugar sugars'),
                      );
                    }).toList(),
                    onChanged: (val) => setState(() => _currentSugars= val),
                  ),
    

    此外,您需要将_currentSugars 的类型从String 更改为String?

    【讨论】:

    • 你能改变我的代码看看它是否有效吗?
    • 您添加了字符串,但仍然显示相同的 2 条红线。
    • 能否请您使用新代码更新您的问题,并显示您声明_currentSugars 的位置?
    • 完成已更新。
    • 恐怕你没有改变_currentSugars变量的类型。在您更新的屏幕截图中,仍然无法看到它实际声明的位置。
    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2012-09-27
    • 2021-10-16
    • 2021-12-29
    • 2022-01-20
    • 2021-11-06
    相关资源
    最近更新 更多