我从互联网上的来源了解到,VoidCallback()是不带参数且不返回参数的函数。以下代码来自一个应用程序,并且该应用程序运行正常,我想问一下将VoidCallback用作type而不是function的原因是什么?
我是Flutter开发的绝对初学者,请指导我。
class LoginPage extends StatefulWidget {
final BaseAuth auth;
final VoidCallback onSignedIn;
LoginPage(this.auth);
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return (_LoginPageState());
}
}
Typedefs用于避免丢失类型信息,但是VoidCallback确实没有丢失任何内容,但是您只知道这是因为它是VoidCallback。如果只是Function
,您可能最终会尝试从中获取值。
Typedefs为工具和开发人员提供有用的信息。
VoidCallback IS无效函数:
typedef VoidCallback = void Function();
VoidCallback是不带参数且不返回参数的函数
Function是所有函数类型的基类。
因此从技术上讲您可以这样做
//instead of
final VoidCallback onSignedIn;
// could call this
final Function onSignedIn;
但是如果要传递特定功能。假设函数不接受任何参数或返回任何东西,VoidCallback会是更好的选择,因为它会检查类型。
class A {
final Function function;
A(this.function);
}
class B {
final VoidCallback voidCallback;
B(this.voidCallback);
}
String getString(String value) {
return value;
}
void main() {
A(getString);
B(getString); //The argument type 'String Function(String)' can't be assigned to the parameter type 'void Function()'
}