【问题标题】:flutter: when to save to Shared Preferences for best performance?颤振:何时保存到共享首选项以获得最佳性能?
【发布时间】:2020-03-11 17:48:40
【问题描述】:

我一直在阅读教程等,现在我正在实施共享首选项以在屏幕之间保存变量。在我的应用程序中,用户在 ListView 小部件中的项目之间来回移动,并可能返回到特定屏幕,我需要将他们的活动保存在那里以防万一。

在 Android 上的 Java 中,您将在用户退出活动(屏幕)时保存到 sharePrefs,因为这是一个缓慢的操作,并且每次变量更改时保存都不是有效的。

是否有保存 Flutter 的最佳实践时间?您如何知道用户正在退出屏幕并返回到较早的 dart 文件?

抱歉,如果这是一个无知的问题。

【问题讨论】:

  • 如果您想在退出屏幕时将数据保存到共享首选项,您可以像这样简单地推送您的页面:var popped = await Navigator.of(context).push。在您正在导航的页面内,像这样弹出它:Navigator.of(context).pop(your object here)。这样,第一个屏幕中的“popped”变量将在页面弹出后具有此对象,然后您可以将其放入共享首选项中。

标签: flutter sharedpreferences


【解决方案1】:

当您在 Flutter 中退出页面时,会调用 dispose 方法,因此我认为您可以将 Shared Preferences 保存在该方法中。 这里有一篇关于这个领域的不错的文章:https://medium.com/flutter-community/widget-state-buildcontext-inheritedwidget-898d671b7956

【讨论】:

  • 嗨,格雷厄姆,我在 dispose() 方法中放置了一个打印语句,即使我退出整个应用程序,它也不会被触发。奇怪的。无论如何,你的回答让我思考,我有另一种方法“void didUpdateWidget(RiddleScreen old)”,它告诉我是否已经移动到新屏幕,所以我可以在那时保存到 sharedPrefs。该功能有效。但是不处理用户退出到主屏幕,所以有点错误的解决方案。
  • 哦,笨蛋我,没读完。我现在看到,另一个库“首选项”。好吧,我会试一试,看看 dispose() 是否在我使用它时被触发。生活变得如此抽象,我可以把所有的时间都花在浴缸里;)。
猜你喜欢
  • 2020-04-02
  • 2021-12-29
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多