我正在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){}

任何建议,将不胜感激。