Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 当视图显示在颤振上时,立即调用什么方法?_Dart_Flutter_State_Navigator - Fatal编程技术网

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

Dart 当视图显示在颤振上时,立即调用什么方法?,dart,flutter,state,navigator,Dart,Flutter,State,Navigator,我有一个屏幕来显示从文件加载到用户的数据,这些数据从远程服务定期更新。为了读取文件并向用户显示,我从void initState调用了一个load data方法,但是在这种情况下,当屏幕创建时,该方法只被调用一次,所以当发生任何更改时,屏幕不会被更新。另一个选项是从Widget BuildContext上下文调用load data方法,但它调用了很多次,我不想要它。我想写一些东西,比如在Swift VIEW上使用会出现,但我没有找到一个方法来做到这一点 每次用户从任何本地导航到屏幕时,我都必须加

我有一个屏幕来显示从文件加载到用户的数据,这些数据从远程服务定期更新。为了读取文件并向用户显示,我从void initState调用了一个load data方法,但是在这种情况下,当屏幕创建时,该方法只被调用一次,所以当发生任何更改时,屏幕不会被更新。另一个选项是从Widget BuildContext上下文调用load data方法,但它调用了很多次,我不想要它。我想写一些东西,比如在Swift VIEW上使用会出现,但我没有找到一个方法来做到这一点

每次用户从任何本地导航到屏幕时,我都必须加载数据,我使用Navigator.push和Navigator.pop在屏幕之间导航

屏幕:主页

屏幕:AddExpensePage


场景:主屏幕是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) {
  ...
  }
}