当我使用Navigator在Tap上推一个新屏幕并传递一个新的类构造函数时,如何每次_playerTimer
更新时都无需重新单击就可以更新新屏幕
由于我的新课程的状态仅在onTap上更新,请帮助!
FullScreenDialog的构建方法被调用一次,因为只有在按下onTap时才会构建它
InkWell(
onTap: () {
return Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => FullScreenDialog(
_playerTimer,
));
},
child: VideoPlayer(
_controller,)
);
答案 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文档。
希望有帮助。