Dart 当视图显示在颤振上时,立即调用什么方法?
我有一个屏幕来显示从文件加载到用户的数据,这些数据从远程服务定期更新。为了读取文件并向用户显示,我从void initState调用了一个load data方法,但是在这种情况下,当屏幕创建时,该方法只被调用一次,所以当发生任何更改时,屏幕不会被更新。另一个选项是从Widget BuildContext上下文调用load data方法,但它调用了很多次,我不想要它。我想写一些东西,比如在Swift VIEW上使用会出现,但我没有找到一个方法来做到这一点 每次用户从任何本地导航到屏幕时,我都必须加载数据,我使用Navigator.push和Navigator.pop在屏幕之间导航 屏幕:主页 屏幕:AddExpensePageDart 当视图显示在颤振上时,立即调用什么方法?,dart,flutter,state,navigator,Dart,Flutter,State,Navigator,我有一个屏幕来显示从文件加载到用户的数据,这些数据从远程服务定期更新。为了读取文件并向用户显示,我从void initState调用了一个load data方法,但是在这种情况下,当屏幕创建时,该方法只被调用一次,所以当发生任何更改时,屏幕不会被更新。另一个选项是从Widget BuildContext上下文调用load data方法,但它调用了很多次,我不想要它。我想写一些东西,比如在Swift VIEW上使用会出现,但我没有找到一个方法来做到这一点 每次用户从任何本地导航到屏幕时,我都必须加
场景:主屏幕是HomePage,第一次调用initState,所以我导航到AddExpensePage,从AddExpensePage我点击后退箭头返回主页,当返回时,屏幕显示时不会调用任何方法来监听。不会出现类似Views的内容,但颤振中正确的挂钩是和。然后一定要把垃圾清理干净 当您的状态第一次附加到树时,将调用initState 每次将相同的状态附加到新的小部件之后,都会调用didUpdateWidget。
没有类似ViewWill的东西出现,但在Flatter中正确的挂钩是和。然后一定要把垃圾清理干净 当您的状态第一次附加到树时,将调用initState 每次将相同的状态附加到新的小部件之后,都会调用didUpdateWidget。 那是我的国家。我理解它如何不适合您的用例。你能澄清这一部分吗?initState方法在应用程序的整个生命周期中只调用过一次。如果我导航并弹出屏幕,它是独立的。它不是。在很多情况下都可以再次调用initState,例如更改键。不,当我返回主屏幕时不会调用initState。如果我从A导航到B,然后从B返回到A,A的初始状态将不会被调用。那么您可能想使用RouteAware。或者pop返回的未来\即initState。我理解它如何不适合您的用例。你能澄清这一部分吗?initState方法在应用程序的整个生命周期中只调用过一次。如果我导航并弹出屏幕,它是独立的。它不是。在很多情况下都可以再次调用initState,例如更改键。不,当我返回主屏幕时不会调用initState。如果我从A导航到B,然后从B返回到A,A的初始状态将不会被调用。那么您可能想使用RouteAware。还是流行音乐带来的未来\
class HomePage extends StatefulWidget {
State<StatefulWidget> createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
@override
void initState() {
print('HOME SCREEN INIT STATE');
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => AddExpensePage()));
},
child: new Icon(Icons.add),
backgroundColor: Color(0xFF7B7BAD),
),
...
}
class AddExpensePage extends StatefulWidget {
State<StatefulWidget> createState() => new AddExpensePageState();
}
class AddExpensePageState extends State<AddExpensePage> {
@override
Widget build(BuildContext context) {
...
}
}