提问人:Gowtham 提问时间:9/12/2023 更新时间:9/12/2023 访问量:48
在 flutter 中将参数绑定到函数的选项
Options to bind arguments to a function in flutter
问:
我想用方法绑定一个参数。我的应用程序中有一个名为 Method1 的方法,我想将 Method2 作为参数传递给 Method1。我想将额外的参数绑定到 Method2,同时将 Method2 传递给 Method1。Method2 的类型为 void Function(ListObject>)。
在 TypeScript 中,有一个选项可以将额外的参数绑定到函数。
function log(...args) {
console.log(this, ...args);
}
const boundLog = log.bind("this value", 1, 2);
const boundLog2 = boundLog.bind("new this value", 3, 4);
boundLog2(5, 6);
Output => // "this value", 1, 2, 3, 4, 5, 6
这是我尝试过的一些代码。
Method1(
text,
Method2,
);
void Method2(List<Object> arg){
// My logics here....
}
void Method1(String newText, void Function(List<Object>) newMethod)
答:
0赞
Vladyslav Ulianytskyi
9/12/2023
#1
您可以尝试:
void method2(List<Object> args) {
print('method2');
args.forEach((element) {
print(element);
});
}
void method1(String newText, void Function(List<Object>) newMethod) {
print('method1 $newText');
newMethod(['arg1', 'arg2']);
}
void main() {
method1(
'do some stuff',
method2,
);
}
或
void method1(
String newText,
void Function(List<Object>) newMethod,
) {
print('method1 $newText');
newMethod.call([newText]);
}
void main() {
method1('do some stuff',
(args) {
method2(args);
},
);
}
评论
0赞
Gowtham
9/13/2023
您好@Vladyslav,感谢您的回复。就我而言,该解决方案不起作用。我想将一个附加参数绑定到 Method2 而不是 List<Object>并在 Method2 中使用它。我无法更改 Method1 中的任何内容,因为它来自第三方包,一旦从服务器获得响应,就会调用 Method2。
0赞
Vladyslav Ulianytskyi
9/13/2023
如果无法更改 Method1 中的任何内容,则无法更改 Method1 接受为参数的 Method2 中的签名。但是您可以尝试使用扩展来包装 Method1
0赞
Gowtham
9/15/2023
嗨,弗拉迪斯拉夫,您打算将哪些扩展包装到 Method1?你能举一些例子吗?
0赞
Vladyslav Ulianytskyi
9/15/2023
这只是寻找合适 directionhttps://dart.dev/language/extension-methods 的一种选择
上一个:Julia 中函数参数的条件
下一个:PHP PHPUnit 测试用例
评论