我目前正在制作一个计时器页面,列出你开始和停止的时间,但当我关闭页面或重启应用程序时,所有的时间都消失了。我想知道如何保存页面的状态,这样它就可以返回页面上的所有时间。这是我的project。
ohtdti5x1#
您应该 checkout 本地存储的Flutter Preferences,以帮助您节省时间戳。此外,还应使用AppLifecycleState侦听AppLifecycleState.paused、AppLifecycleState.inactive或AppLifecycleState. resume的时间当应用程序暂停或不活动时,将计时器保存在首选项中,当计时器恢复时,从上次保存的时间加上自上次应用程序不活动或暂停以来的时间差继续计时。
ddhy6vgd2#
当页面(路由)在内存中时,状态就存在了,一旦你从内存中删除了页面,状态就失去了它的数据。这就像计算机的RAM --应用程序存储在RAM中,一旦它不被使用,内存就会被释放。为了持久化数据,我建议使用本地存储(保存到设备上并从设备上加载)。下面是以下文章的链接:How to save to local storage using Flutter?
qlckcl4x3#
您可以将didChangeAppLifecycleState与SharedPreferences一起使用,也可以使用hydratedbloc包,它将自动为您处理状态的持久化。
didChangeAppLifecycleState
didChangeAppLifecycleState(AppLifecycleState state) { if(state == AppLifecycleState.detached) { //save to SharedPreference } }
wr98u20j4#
您可以查看Restoration Mixins。请参阅此处:https://api.flutter.dev/flutter/widgets/RestorationMixin-mixin.html从以上链接复制粘贴:还原数据可以序列化,并在稍后的时间点用于将State对象中的有状态成员还原为生成数据时它们所具有的相同值。这个mixin在RestorableProperty中组织State对象的恢复数据。在状态恢复期间State对象想要恢复的所有信息都需要保存在RestorableProperty的子类中。例如,要恢复计数器应用程序中的计数值,该值应该存储在RestorableInt类型的成员变量中,而不是int类型的普通成员变量中。mixin确保RestorablePropertyys的当前值作为恢复状态的一部分被序列化。由State来确保存储在属性中的数据总是最新的。当小部件从以前生成的恢复数据恢复时,RestorablePropertyys的值自动恢复到恢复数据被序列化时的值。另请参阅https://api.flutter.dev/flutter/services/RestorationManager-class.html从上面的链接复制粘贴:恢复数据可以被序列化,并在稍后的时间点用于将应用程序恢复到序列化数据所描述的先前状态。移动操作系统使用状态恢复的概念来提供应用程序永远在后台继续运行的假象:在应用程序被置于后台后,用户始终可以返回到该应用程序并发现其处于相同的状态。但在实践中,操作系统可能会终止该应用程序,以释放资源供前台运行的其他应用程序使用。在此之前,应用程序有机会序列化其还原数据。当用户导航回后台应用程序时,该应用将使用该数据来将自身恢复到与用户将该应用后台化时相同的状态。
4条答案
按热度按时间ohtdti5x1#
您应该 checkout 本地存储的Flutter Preferences,以帮助您节省时间戳。此外,还应使用AppLifecycleState侦听AppLifecycleState.paused、AppLifecycleState.inactive或AppLifecycleState. resume的时间
当应用程序暂停或不活动时,将计时器保存在首选项中,当计时器恢复时,从上次保存的时间加上自上次应用程序不活动或暂停以来的时间差继续计时。
ddhy6vgd2#
当页面(路由)在内存中时,状态就存在了,一旦你从内存中删除了页面,状态就失去了它的数据。这就像计算机的RAM --应用程序存储在RAM中,一旦它不被使用,内存就会被释放。为了持久化数据,我建议使用本地存储(保存到设备上并从设备上加载)。下面是以下文章的链接:How to save to local storage using Flutter?
qlckcl4x3#
您可以将
didChangeAppLifecycleState
与SharedPreferences一起使用,也可以使用hydratedbloc包,它将自动为您处理状态的持久化。wr98u20j4#
您可以查看Restoration Mixins。请参阅此处:https://api.flutter.dev/flutter/widgets/RestorationMixin-mixin.html
从以上链接复制粘贴:
还原数据可以序列化,并在稍后的时间点用于将State对象中的有状态成员还原为生成数据时它们所具有的相同值。
这个mixin在RestorableProperty中组织State对象的恢复数据。在状态恢复期间State对象想要恢复的所有信息都需要保存在RestorableProperty的子类中。例如,要恢复计数器应用程序中的计数值,该值应该存储在RestorableInt类型的成员变量中,而不是int类型的普通成员变量中。
mixin确保RestorablePropertyys的当前值作为恢复状态的一部分被序列化。由State来确保存储在属性中的数据总是最新的。当小部件从以前生成的恢复数据恢复时,RestorablePropertyys的值自动恢复到恢复数据被序列化时的值。
另请参阅https://api.flutter.dev/flutter/services/RestorationManager-class.html
从上面的链接复制粘贴:
恢复数据可以被序列化,并在稍后的时间点用于将应用程序恢复到序列化数据所描述的先前状态。移动操作系统使用状态恢复的概念来提供应用程序永远在后台继续运行的假象:在应用程序被置于后台后,用户始终可以返回到该应用程序并发现其处于相同的状态。但在实践中,操作系统可能会终止该应用程序,以释放资源供前台运行的其他应用程序使用。在此之前,应用程序有机会序列化其还原数据。当用户导航回后台应用程序时,该应用将使用该数据来将自身恢复到与用户将该应用后台化时相同的状态。