Flutter For Web 有没有一种方法可以存储数据?

18
我正在使用Flutter for Web构建一个Web应用程序,我知道在Flutter的移动版本中,有一种方法可以将数据存储在设备中,但我不确定这是否已经在Flutter for Web中实现了。

2
可能是如何在Flutter Web中保存到Web本地存储的重复问题。 - Dariusz Bacinski
4个回答

6
你可以使用SharedPreferences插件来存储和检索持久的简单数据。从版本0.5.4+7开始,它们支持Web。

3

2
将像令牌这样的数据存储以维护用户在我的应用程序中的登录状态,这是否安全? - user7790873
4
我认为客户端上的任何东西都不安全。我认为保存令牌应该没问题。 - Gazihan Alankus
如果有人来到这里;根据这里的答案 https://dev59.com/YFMI5IYBdhLWcg3wXaPZ,似乎这种方法不再可行。 - user3808307

2

Moor 是一个基于 sqlite 并基于indexedDb 构建的响应式持久性数据存储库。该库兼容大多数Web浏览器。
您可以使用该软件包,并从官方链接查看文档和示例。


看起来Moor现在改名为Drift了。新链接:https://pub.dev/packages/drift - Lemonius

1

您可以使用dart:html包中的本地存储,但如果您的应用程序也在移动设备上运行,则最好使用universal_html包,该包提供了dart:html的所有功能。

如果您的应用程序具有移动支持,在我编写此答案时,dart编译器将向您发出以下警告:

避免在不是Web插件的Flutter包中使用Web库、dart:html、dart:js和dart:js_util。这些库不受Web环境之外的支持;依赖它们的功能将在Flutter移动端运行时失败,并且在Flutter Web中通常不鼓励使用它们。

使用universal_html的简单示例:

import 'package:universal_html/html.dart';

void main() {
  String username = window.localStorage['username'];
  if (username == null) {
    window.localStorage['username'] = "dartyDev";
  } else {
    window.localStorage.remove('username');
  }
  // Get the latest updated value
  print(window.localStorage['username']);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接