我有 2 个页面,页面 Screen1 和页面 Screen2
class Screen1 extends StatefulWidget {
@override
State createState() => new Screen1State();
}
class Screen1State extends State<Screen1> {
testFunction() async {
var response = await http.post(...);
return "success";
}
@override
void initState() {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Screen2(handler: testFunction)
),
);
}
}
class Screen2 extends StatefulWidget {
@override
State createState() => new Screen2State();
final Function handler;
Screen1({@required this.handler});
}
class Screen2State extends State<Screen2> {
@override
void initState() {
var test = widget.handler;
print(test); // the result will be instance of Future<dynamic> instead of "success"
}
}
当我在 Screen2 上从 Screen1 调用传递的函数时,我需要获取“成功”值(这是函数的返回值),但我得到的是“Instance of Future”(函数的类型) .
所以我想问一下有没有什么办法可以从另一个类中获取传递函数的返回值?
谢谢。
最佳答案
你可以试试下面的方法-
class Screen2State extends State<Screen2> {
@override
void initState() {
widget.handler().then((result) {
print(result); // this will print "success" once the Future is complete
});
}
}
使用 Future.then()
你可以在 then()
方法中提供一些代码,只有当 Future
完成时才会执行.希望这对您有所帮助!
关于flutter - 如何从Flutter中的另一个类传递的函数获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404768/