每次Navigator.push到下一页时都会调用的回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次Navigator.push到下一页时都会调用的回调相关的知识,希望对你有一定的参考价值。

我有两个页面,彼此像这样移动。

MyHomePage -> ResPage -> MyHomePage -> ResPage

我想在每次出现ResPage时执行该功能。

代码是此

Navigator.push(context,MaterialPageRoute(
            builder: (context) => ResPage()));

Navigator.push(context,MaterialPageRoute(
          builder: (context) => MyHomePage())

resPage是有状态的小部件。

class ResPage extends StatefulWidget {
  ResPage({Key key}) : super(key: key);

  @override
  _ResPageState createState() => _ResPageState();
}

class _ResPageState extends State<ResPage> {
    void initState(){ // it called just once.
    }
    @override
    Widget build(BuildContext context) {
      return Stack( // it called many times.
        children: <Widget>[
          background,
          Scaffold(
            backgroundColor: Colors.transparent,
            body: resStack
          ),
        ],
      );  
  }

[initState()仅被调用一次,build被多次调用。

页面出现时有回叫吗?

答案

是的!

您可以添加后框架回调(在构建窗口小部件之后调用)

像这样:

Widget build(BuildContext context) {
  WidgetsBinding.addPostFrameCallback(functionToCall);
}

以上是关于每次Navigator.push到下一页时都会调用的回调的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮移动到下一页时出错

移动到下一页时不显示对话框[重复]

导航到下一页时,Chrome (iOS) 中的奇怪自动滚动/跳转行为

Nextjs如何在转到下一页时不卸载上一页(保持状态)

PagerAdapter 中的异步位置

带有 uitableview 的基于页面的应用程序;转到下一页时如何显示详细视图并在表格中显示其他数据?