按下新屏幕后如何重建状态

时间:2020-03-04 17:37:39

标签: flutter state-management

当我使用Navigator在Tap上推一个新屏幕并传递一个新的类构造函数时,如何每次_playerTimer更新时都无需重新单击就可以更新新屏幕

由于我的新课程的状态仅在onTap上更新,请帮助!

FullScreenDialog的构建方法被调用一次,因为只有在按下onTap时才会构建它

InkWell(
            onTap: () {
              return Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (BuildContext context) => FullScreenDialog(
                        _playerTimer,
                  ));
            },
            child: VideoPlayer(
                        _controller,)
          );

2 个答案:

答案 0 :(得分:0)

您必须使用 setState 来重建UI。 例如:

setState((){
  _playerTimer = _playerTimer + 1;
});

这是我可以看到的所有帮助的全部信息

答案 1 :(得分:0)

通过传递属性实例化一个新类(在您的代码中为 FullScreenDialog )时,您只是对您的代码说一个新类将通过使用您提供的参数进行初始化。

如果要在 _playerTimer 更改时始终更新 FullScreenDialog 类,则必须使用 setState(),这是 StatefulWidgets 的内置函数,每次可观察属性发生变化时,应用程序的UI都会更新。

示例

setState( () {
  _playerTimer = getUpdatedTimer();
});

假设在 getUpdatedTimer()方法内部,您将管理用于更新此变量,调用服务等的逻辑。 如果要在不与接口交互的情况下更新此变量,则可能还需要一个计时器。请查看this问题以获取有关此问题的更多详细信息。

如果您从Flutter开发开始,建议您阅读有关状态管理的本文(Adding interactivity to your Flutter app) 和 setState method文档。

希望有帮助。