当视图显示在颤音上时,立即调用什么方法



我有一个屏幕,可以显示从文件加载到用户的数据,这些数据会从远程服务定期更新。要读取文件并向用户显示,我正在调用void initState()的加载数据方法,但是这样,该方法仅在屏幕创建时一次称为一次,因此当发生任何更改时,屏幕不会更新。另一个选项是从Widget build(BuildContext context)调用加载数据方法,但要用很多次来调用,我不想要它。我想在Swift viewWillAppear()上写一些类似的东西,但我找不到这样做的方法。

我必须每次用户导航到屏幕,从任何本地,我都使用Navigator.push()Navigator.pop()在屏幕之间导航。

屏幕:主页

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),
        ),
      ...
     }

屏幕:addexpensepage

class AddExpensePage extends StatefulWidget {
  State<StatefulWidget> createState() => new AddExpensePageState();
}
class AddExpensePageState extends State<AddExpensePage> {
 @override
  Widget build(BuildContext context) {
  ...
  }
}

方案:主屏幕是 HomePage,第一次称为 initState(),所以我导航到 AddExpensePage,从 AddExpensePage中,我单击后箭头返回到 HomePage,当返回时,返回时,没有方法在屏幕为屏幕时呼叫显示。

没有类似 viewWillAppear的东西,但是在扑波中的正确钩子是 initStatedidUpdateWidget。然后确保在dispose上清理。

  • initState被称为您的状态首次附加到树上
  • didUpdateWidget每次将同一状态附加到新的小部件时都会调用。

相关内容

  • 没有找到相关文章

最新更新