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调用和构建调用,但缺少在某些情况下可能需要的完成回调!