Flutter中的VoidCallback如何工作?

问题描述 投票:0回答:2

我从互联网上的来源了解到,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());
  }
}
flutter
2个回答
0
投票

Typedefs用于避免丢失类型信息,但是VoidCallback确实没有丢失任何内容,但是您只知道这是因为它是VoidCallback。如果只是Function,您可能最终会尝试从中获取值。

Typedefs为工具和开发人员提供有用的信息。

https://dart.dev/guides/language/language-tour#typedefs


0
投票

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()'
}

© www.soinside.com 2019 - 2024. All rights reserved.