我正在Flutter中开发一个移动应用程序,尝试将函数作为参数传递给小部件时遇到问题。
更准确地说:
class Test extends StatefulWidget {
final Function(bool) onChanged;
const Test({Key key, this.onChanged}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
bool switchValue = false;
@override
Widget build(BuildContext context) {
return Container(
child: Switch(
value: switchValue,
onChanged: (bool value) {
setState(() => switchValue = value);
widget.onChanged(value);
}));
}
}
抛出NoSuchMethodError:使用未定义onChanged函数的窗口小部件时,“方法'call'在null上被调用”。 如何为onChanged参数定义默认函数?该参数应该是可选的。 我尝试过:
- (){}-无法将'Null Function()'类型的值分配给'dynamic Function(bool)'类型的变量。
- (布尔){}-可选参数的默认值必须为常数。
不使用默认值的解决方案是:
- 在调用onChange参数之前检查它是否不为null,或者
- 在每次使用小部件时对其进行定义-onChanged:(bool val){}
任何建议,将不胜感激。