icloud_kv_storage

一个基于 iCloud 同步多个 iOS & Mac 设备的 Key Value Storage Flutter 插件。

Snip20230607_1

用法

注意:建议对 iOS 设备使用真机测试,因为 iOS 模拟器可能无法实时同步。Mac 设备可以直接编译测试。只需在不同的 Apple 设备上登录同一个 iCloud 账户即可同步轻量级的 Key Value 数据。

  • 第一步

为您的 iOS 或 Mac 项目启用 iCloud Key Value 服务。

image

  • 然后尽情享用吧。

示例代码。

import 'package:icloud_kv_storage/icloud_kv_storage.dart';

var iCloudStorage = CKKVStorage();

更新一个键

void _incrementCounter() {
    setState(() {
      _counter++;
      iCloudStorage.writeString(key: key, value: _counter.toString());
    });
  }

读取一个键

iCloudStorage.getString('k_storage_count').then((value) {
      if (value != null) {
        setState(() {
          _counter = int.parse(value);
        });
      }
    });

删除一个键

void _clearCounter() {
    setState(() {
      _counter = 0;
      iCloudStorage.delete(key);
    });
  }

实时回调其他设备上的键值更新

iCloudStorage.onCloudKitKVUpdateCallBack(
      onCallBack: (kvMap) {
        print('receive icloud_key_update map $kvMap');
        //if receive remove key will rec {flutter.k_storage_count: null}
        //if receive update key will rec {flutter.k_storage_count: 1}
        //because have prefix flutter. so need use my method to get real key.
        var key = iCloudStorage.getRealKey('k_storage_count');
        if (kvMap.containsKey(key)) {
          String? value = kvMap[key];
          setState(() {
            if (value != null) {
              _counter =
                int.parse(kvMap[iCloudStorage.getRealKey('k_storage_count')]);
            } else {
              _counter = 0;
            }
          });
        }
      },
    );

发布日志

0.0.1

基于 Apple CloudKit,可以在不同的 Apple 设备(如 iOS 和 Mac 设备)之间同步轻量级键值存储数据。目前,只能同步 String 数据。

Future

目前仅支持 String 数据,未来将添加 int 和 double 等基本数据类型。

GitHub

查看 Github