我正在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
:widget使用时未定义onChanged
函数,“调用'call'方法为null”,onChanged
参数如何定义默认函数,参数为可选,我试过:
() {}
-不能将"Null Function()“类型的值分配给”dynamic Function(bool)“类型的变量。(bool) {}
-可选参数的缺省值必须为常量。
不使用默认值的解决方案有:
- 在调用
onChange
参数之前检查它是否不为空,或者 - 每次使用小部件时定义它-
onChanged: (bool val) {}
如有任何建议,我们将不胜感激。
1条答案
按热度按时间bf1o4zei1#
您可以像这样定义默认函数。
您可以在dartpad上查看一个示例代码来说明这一点。https://dartpad.dev/30fc0fdc02bec673779eebc733753c05