【问题标题】:Flutter; save user generated data on phone扑;将用户生成的数据保存在手机上
【发布时间】:2021-01-30 16:46:24
【问题描述】:

在我的应用程序中,我有一个用户添加项目的列表。 我希望能够将这些数据(列表)存储在本地的手机上,以便下次用户打开应用程序时可以显示该列表。 我该怎么做。

(该应用仅适用于安卓手机)

【问题讨论】:

  • 如果数据很少,你可以使用共享偏好 如果有很多数据,我建议使用 sqllite@Tobias H.

标签: database flutter local-storage storage


【解决方案1】:

您可以使用 Shared Preferences 插件,这是一个简单的键值存储

这里是插件https://pub.dev/packages/shared_preferences/install的链接

这是一个示例,说明您如何存储项目列表以及如何加载它们:

class PersonData {
  final String id;
  final String name;
  final String lastName;

  PersonData({this.id, this.name, this.lastName});

}
void saveItems(List<PersonData> items) async {
  SharedPreferences sharedPreferences = await SharedPreferences.getInstance();

  List<String> personList = [];

  items.forEach((element) {
    personList.add("${element.id},${element.name},${element.lastName}");
  });

  sharedPreferences.setStringList("personData", personList);
}

Future<List<PersonData>> loadItems() async {
  SharedPreferences sharedPreferences = await SharedPreferences.getInstance();

  List<String> personList = sharedPreferences.getStringList("personData");

  List<PersonData> items = [];

  personList.forEach((element) {
    List<String> personData = element.split(",");

    PersonData person = PersonData(
        id: personData[0], name: personData[1], lastName: personData[2]);

    items.add(person);
  });
  return items;
}

【讨论】:

  • 嗨,我尝试使用这段代码,我想知道,这段代码到底存储了什么列表,是在第 9 行的 'void saveItems ',以及如何将我已经拥有的列表保存在另一个文件中,例如 main.dart(也就是说,此代码是另一个单独的文件。)
【解决方案2】:

您可以使用不同的方法,

Shared Preferences - 将数据保存到本地缓存中。

为简单数据包装特定于平台的持久存储(iOS 和 macOS 上的 NSUserDefaults,Android 上的 SharedPreferences 等)。数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,所以这个插件不能用于存储关键数据。

Sqflite - 使用 SQLite 本地数据库。

Flutter 的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和批处理 打开期间的自动版本管理 插入/查询/更新/删除查询的助手 在 iOS 和 Android 上的后台线程中执行的 DB 操作

如果是小应用,我建议使用Hive

Hive 是一个用纯 Dart 编写的轻量级且超快的键值对数据库

这是一个使用 Hive 的示例。

var box = Hive.box('myBox');
box.put('name', 'David');
var name = box.get('name');
print('Name: $name');

当然有很多包使用不同的方式来存储数据,你可以搜索更适合你使用的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多