Flutter 名为everytime Navigator.push的回调将被推到下一页

Flutter 名为everytime Navigator.push的回调将被推到下一页,flutter,dart,Flutter,Dart,我有两页像这样互相移动 MyHomePage->ResPage->MyHomePage->ResPage 我想在每次出现ResPage时执行该函数 这是什么代码 Navigator.push(context,MaterialPageRoute( builder: (context) => ResPage())); Navigator.push(context,MaterialPageRoute( builder: (context) =>

我有两页像这样互相移动

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
          ),
        ],
      );  
  }
class ResPage扩展StatefulWidget{
ResPage({Key}):super(Key:Key);
@凌驾
_ResPageState createState()=>\u ResPageState();
}
类_ResPageState扩展状态{
void initState(){//它只调用了一次。
}
@凌驾
小部件构建(构建上下文){
返回堆栈(//多次调用它。
儿童:[
出身背景
脚手架(
背景颜色:颜色。透明,
正文:resStack
),
],
);  
}
initState()
被调用一次,而
build
被调用多次

页面出现时是否有任何回拨信息???

是的

您可以添加帧后回调(小部件生成后的调用)

像这样:

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

在这个场景中,您给出了,
initState
至少应该被调用两次。我同意@RemiRousselet init函数应该在每次小部件被新推入堆栈时被调用。这是一个非常糟糕的做法。如果可以的话,Flatter将公开一个“后期构建”widgetsI不这么认为。如果您在其中投入繁重的工作或非异步工作,这将是一个糟糕的做法。这也是问题所在,Flatter为您提供了initState调用和构建调用,但缺少在某些情况下可能需要的完成回调!