flutter - 'bool?' 类型的值 不能分配给“bool”类型的变量
问题描述
由于函数具有 bool 语句,我在这里使用了 Function(bool?)
Widget buildSwitchtile(String title, String desc, bool currentvalue,
Function(bool?) updatevalue) {
return SwitchListTile(
title: Text(title),
value: currentvalue,
subtitle: Text(desc),
onChanged: updatevalue,
);
}
出现以下错误如何解决?'bool?' 类型的值 不能分配给“bool”类型的变量。请帮我解决这个问题。-------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --
import 'package:dishes_app/widgets/main_drawer.dart';
import 'package:flutter/material.dart';
class FilterScreen extends StatefulWidget {
static const routeName = '/filters';
@override
_FilterScreenState createState() => _FilterScreenState();
}
class _FilterScreenState extends State<FilterScreen> {
bool _glutenFree = false;
bool _vegetarian = false;
bool _vegan = false;
bool _lactoseFree = false;
Widget buildSwitchtile(String title, String desc, bool currentvalue,
Function(bool?) updatevalue) {
return SwitchListTile(
title: Text(title),
value: currentvalue,
subtitle: Text(desc),
onChanged: updatevalue,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Settings'),
),
drawer: MainDrawer(),
body: Column(
children: [
Container(
padding: EdgeInsets.all(20.0),
child: Text(
'Adjust Your meal selection',
style: Theme.of(context).textTheme.title,
),
),
Expanded(
child: ListView(
children: [
buildSwitchtile('Gluten-Free', 'Only include gluten-free meals',
_glutenFree, (newvalue) {
setState(() {
_glutenFree = newvalue;
});
}),
buildSwitchtile(
'Lactose-Free', 'Only include Lactose Free', _lactoseFree,
(newvalue) {
setState(() {
_lactoseFree = newvalue;
});
}),
buildSwitchtile('Vegetarian ', 'Only include Vegetarian food ',
_vegetarian, (newvalue) {
setState(() {
_vegetarian = newvalue;
});
}),
buildSwitchtile('Vegan', 'Only include Vegan', _vegan,
(newvalue) {
setState(() {
_vegan = newvalue;
});
})
],
),
),
],
),
);
}
}
解决方案
放 ”!” 最后在使用该布尔值时。It(bool?myBool) 有一个可以为空的值,所以在使用它时,你必须做 myBool!
推荐阅读
- python - 有没有更有效的算法来计算 8 拼图游戏的曼哈顿距离?
- r - 循环“result_vector = c(result_vector, new_value)”时究竟会发生什么
- mysql - 无法创建/写入文件'/home/vagrant/folder/test.csv'(错误代码:13“权限被拒绝”
- c# - 在设计时添加通用 Windows 窗体 UserControl
- java - 连接具有 StringConverter 的 Slider 和 Spinner
- java - 使用 ZXing 从图像(而不是相机)扫描二维码
- julia - Julia 的 Plots.jl 相当于 R 的 `abline` 是什么?
- javascript - Html5 Canvas - 动态表格将画布向下推,现在绘图/图像未显示
- android - 如何从 HTTP 响应在 Android 中创建 SVG 资产?
- java - Auth Session Servlet java jsp