【问题标题】:Flutter Error: A value of type 'bool?' can't be assigned to a variable of type 'bool'颤振错误:“布尔”类型的值?不能分配给“bool”类型的变量
【发布时间】:2021-12-10 19:36:58
【问题描述】:
class _FiltersScreenState extends State<FiltersScreen> {
  var _glutenFree = false;
  var _vegetarian = false;
  var _vegan = false;
  var _lactoseFree = false;

  @override
  initState() {
    _glutenFree = widget.currentFilters['gluten'];         ----> ERROR
    _lactoseFree = widget.currentFilters['lactose'];       ----> ERROR
    _vegetarian = widget.currentFilters['vegetarian'];     ----> ERROR
    _vegan = widget.currentFilters['vegan'];               ----> ERROR
    super.initState();
  }

  Widget _buildSwitchListTile(
    String title,
    String description,
    bool currentValue,
    Function updateValue,
  ) {
    return SwitchListTile(
      title: Text(title),
      value: currentValue,
      subtitle: Text(
        description,
      ),
      onChanged: updateValue,       ------> ERROR
    );
  }

我不是 Flutter 专业人士。 我不知道,我也尝试过 bool 而不是 var。你能帮助我吗? 我已经在行中标记了错误。谢谢!

【问题讨论】:

  • 欢迎来到 Stackoverflow。除了它们出现的行之外,最好将错误消息完全按照它们出现在你这里的方式发布。

标签: flutter boolean var


【解决方案1】:

响应可能有空值。

要么尝试为你的布尔值分配它们的类型:

bool? _glutenFree = false;
bool? _vegetarian = false;
bool? _vegan = false;
bool? _lactoseFree = false;

或者:

_glutenFree = widget.currentFilters['gluten'] ?? false;
_lactoseFree = widget.currentFilters['lactose'] ?? false;
_vegetarian = widget.currentFilters['vegetarian'] ?? false;
_vegan = widget.currentFilters['vegan'] ?? false;

此外,updateValue 函数的类型为 ValueChanged&lt;bool&gt;,因此在分配新值时请确保它们属于同一类型。

【讨论】:

  • 感谢您的帮助,但这也不起作用:/
  • 如果我使用 bool? -> 然后我得到一个错误: Expanded( child: ListView( children: [ _buildSwitchListTile( 'Gluten-free', 'Only include gluten-free foods.', _glutenFree, ----> ERROR (newValue) { setState( () { _glutenFree = newValue; }, ); }, ),
  • 是的,这是因为SwitchListTile 中的value 的类型为bool 而不是bool?。尝试添加null 检查,如_gluttenFree ?? false。并且newValue 的类型为bool
  • 错误消失了,但我的模拟器仍然无法工作
  • flutter clean &amp;&amp; flutter pub get 并重建。
猜你喜欢
  • 2020-07-02
  • 2021-03-28
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多