如何在 Flutter 中将参数传递给动作
Posted
技术标签:
【中文标题】如何在 Flutter 中将参数传递给动作【英文标题】:How to pass parameters to action in Flutter 【发布时间】:2021-02-08 06:41:45 【问题描述】:我有这个动作
Future<void> signUpAction(Store<AppState> store) async
try
// ...
catch (e)
// ..
我是这样发送的
store.dispatch(signUpAction);
现在,如果我想传递两个参数,我该怎么做?因为那里已经有一个参数了。
我试过了
Future<void> signUpAction(Store<AppState> store, email, password) async
try
// ...
catch (e)
// ..
但是如果我这样做了,那么在调度时
store.dispatch(signUpAction("some@email.com", "somEPa55word!"));
它说singUpAction需要3个参数,所以我不太清楚如何只传递这两个
谢谢
【问题讨论】:
因为您的signUpAction()
方法需要/需要 3 个参数。通过添加
signUpAction(Store<AppState> store, email, password)
使其成为可选命名参数,现在您可以通过(signUpAction(email: "some@email.com", password: "somEPa55word!")
调用它。这里有一些很好的答案***.com/a/55866881/12789200
谢谢@Reign,如果您愿意,可以将其作为答案,以便我接受。
真的有用吗?那么该方法如何获得商店呢?
@nvoigt,不,它没有
【参考方案1】:
调度方法需要一个特定的签名。如果您的方法不完全具有该签名,您可以即时创建与签名匹配的anonymous function。
在这种情况下,由于您的方法不仅需要商店,还需要电子邮件和密码:
store.dispatch((x) => signUpAction(x, "some@email.com", "somEPa55word!"));
【讨论】:
在此之前显示错误:预期为 ')'。 Redux.store.dispatch(x => signUpAction(x, "some@email.com", "someEPa55word!")); @user3808307 抱歉,忘记括号了。 它似乎工作正常,但我的操作有问题,所以我无法正确测试它,我会在修复后立即通知您,谢谢 当你查看dispatch
的函数定义时,你会发现它只有一个参数。该参数必须是一个将 store 作为参数并返回 Future() =>
或()
所做的,它动态构建了一个方法。所以(x) => code;
构建了一个获取x
并返回任何code
返回的方法。以上是关于如何在 Flutter 中将参数传递给动作的主要内容,如果未能解决你的问题,请参考以下文章