export static method

Future<void> export(
  1. String fileName,
  2. DynamicMap data
)

Export data against fileName.

For Web, output to LocalStorage with fileName as the key.

Encryption based on fileName.

datafileNameに対してエクスポートします。

Webの場合はfileNameをキーにした状態でLocalStorage`に出力します。

fileNameに基づく暗号化を行ないます。

Implementation

static Future<void> export(String fileName, DynamicMap data) async {
  if (_completer != null) {
    return _completer?.future;
  }
  _completer = Completer();
  try {
    WidgetsBinding.instance.scheduleFrameCallback((_) async {
      try {
        await compute<_ComputeMessaging, void>(
          (message) async {
            final json =
                jsonEncode(_unsupportedObjectFilter(message.data)).toAES(
              message.fileName.last().toSHA1(),
            );
            await File(message.fileName).writeAsString(json);
          },
          _ComputeMessaging(fileName: fileName, data: data),
        );
        _completer?.complete();
        _completer = null;
      } catch (e) {
        _completer?.completeError(e);
        _completer = null;
      } finally {
        _completer?.complete();
        _completer = null;
      }
    });
  } catch (e) {
    _completer?.completeError(e);
    _completer = null;
  }
}