flutter - 如何从Flutter中的另一个类传递的函数获取返回值?

标签 flutter dart

我有 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/

相关文章:

unit-testing - flutter :测试

flutter - Dart/Flutter 将分数字符串转换为 double 字符串

flutter - 如何在flutter中使用文本字段制作数字计数器应用程序?

dart - 如何使用 PaginatedDataTable 正确实现列、字段和行上的单击事件

flutter - 异步功能完成后如何推送到页面?

dart - 在 dart 中使用 fromJson 扩展

dart - 获取在 Dart 中使用 <polymer-element> 创建的自定义元素的宽度?

flutter - 如何在 Flutter 中创建粘性商店按钮动画?

firebase - 当我为 flutter web 添加 firebase 时,我的应用程序将无法运行

firebase - Firebase 控制台中不存在下载 URL