gpt4 book ai didi

flutter - Dart引用的回调带有返回值

转载 作者:行者123 更新时间:2023-12-03 04:46:32 25 4
gpt4 key购买 nike

我必须在Dart中的回调函数上返回一个值。现在,当我们使用直接回调时,执行此操作很简单,但在另一种情况下,必须使用引用的回调。这可能很愚蠢,但我必须这样做。

方法1(无效):

import 'dart:async';

main() {
TestClass().method2(() => "Returend String");
}

class TestClass {
String Function() getStringCallback;

TestClass() {
method1();
}

void method1() {
TestClass2(getStringCallback);
}

void method2(String Function() callbackString) {
this.getStringCallback = callbackString;
}
}

class TestClass2 {
String Function() getStringCallback;

TestClass2(this.getStringCallback) {
Timer(Duration(seconds: 3), () {
print(getStringCallback.call());
});
}
}

上面的代码会导致错误,因为 getStringCallback为null。

TestClass2由 method1实例化,因此可以在此处执行此操作。是否有可能从 method2中执行此操作。

目前,我正在这样做。

方法2(按预期工作):
import 'dart:async';

main() {
TestClass().method2("Returend String");
}

class TestClass {
String getStringCallback;

TestClass() {
method1();
}

void method1() {
TestClass2(()=>getStringCallback);
}

void method2(String callbackString) {
this.getStringCallback = callbackString;
}
}

class TestClass2 {
String Function() getStringCallback;

TestClass2(this.getStringCallback) {
Timer(Duration(seconds: 3), () {
print(getStringCallback.call());
});
}
}

我想用方法1做到这一点。有可能吗?

最佳答案

您可以将回调包装为一个函数,该函数可以在分配新的回调时更改其行为。用TestClass2(getStringCallback);替换TestClass2(() => getStringCallback());

关于flutter - Dart引用的回调带有返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62179820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com