有没有什么方法可以通过引用而不是通过flutter中的值来调用函数。
iovurdzv1#
如果你想问的是是否可以通过引用而不是值来调用函数并传递参数,那么不完全是这样。从技术上讲,Dart始终使用按值传递(although I prefer calling it "pass-by-assignment")。如果你想模拟按引用传递,你可以在其他对象中 * Package * 你的参数,以增加一个间接级别:
class Reference<T> { T value; Reference(this.value); } void trimString(Reference<String> string) { string.value = string.value.trim(); }
9nvpjoqh2#
在flutter函数也是一级对象,所以你可以在任何地方传递它们。你就像
typedef ProfileFormSubmitCallback = void Function( String? photoUrl, String firstName, String lastName, String email, ); then
你可以像这样引用你的函数
ProfileFormSubmitCallback myFunction;
pjngdqdw3#
这就是函数的传递和使用方式。希望这是你想要的
class ButtonPrimary extends StatelessWidget { final String text; final double? height; final double? width; final VoidCallback onPressed; const ButtonPrimary({ Key? key, required this.onPressed, required this.text, this.height, this.width, }) : super(key: key); @override Widget build(BuildContext context) { return SizedBox( height: height ?? 50, width: width ?? MediaQuery.of(context).size.width * .6, child: ElevatedButton( onPressed: onPressed, child: Widget(...), ), ); } }
和用法
ButtonPrimary( onPressed: onLoginPressed, text: 'Register', width: MediaQuery.of(context).size.width * .9, ) .... void onLoginPressed() { // Do sth }
3条答案
按热度按时间iovurdzv1#
如果你想问的是是否可以通过引用而不是值来调用函数并传递参数,那么不完全是这样。从技术上讲,Dart始终使用按值传递(although I prefer calling it "pass-by-assignment")。
如果你想模拟按引用传递,你可以在其他对象中 * Package * 你的参数,以增加一个间接级别:
9nvpjoqh2#
在flutter函数也是一级对象,所以你可以在任何地方传递它们。
你就像
你可以像这样引用你的函数
pjngdqdw3#
这就是函数的传递和使用方式。希望这是你想要的
和用法