Export API Dash collection

This commit is contained in:
Ashita Prasad
2023-08-28 14:31:11 +05:30
parent 867f6e979c
commit 66a0ef4a04
3 changed files with 38 additions and 2 deletions

View File

@ -203,4 +203,10 @@ class CollectionStateNotifier extends StateNotifier<List<RequestModel>?> {
await hiveHandler.removeUnused();
ref.read(saveDataStateProvider.notifier).update((state) => false);
}
Map<String, dynamic> exportData() {
return {
"data": state!.map((e) => e.toJson(includeResponse: false)).toList()
};
}
}

View File

@ -1,7 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:apidash/providers/providers.dart';
import 'package:apidash/widgets/widgets.dart';
import '../providers/providers.dart';
import '../widgets/widgets.dart';
import '../utils/utils.dart';
import 'package:apidash/consts.dart';
class SettingsPage extends ConsumerStatefulWidget {
@ -73,6 +74,24 @@ class _SettingsPageState extends ConsumerState<SettingsPage> {
.update(saveResponses: value);
},
),
ListTile(
contentPadding: EdgeInsets.zero,
hoverColor: kColorTransparent,
title: const Text('Export Collection'),
subtitle: const Text('Export your collection to a JSON file'),
trailing: FilledButton(
onPressed: () async {
var data = ref
.read(collectionStateNotifierProvider.notifier)
.exportData();
var pth = await getFileDownloadpath(null, "json");
if (pth != null) {
await saveFile(pth, jsonMapToBytes(data));
}
},
child: const Text("Export Data"),
),
),
ListTile(
contentPadding: EdgeInsets.zero,
hoverColor: kColorTransparent,

View File

@ -98,3 +98,14 @@ Uint8List? stringToBytes(String? text) {
return bytes;
}
}
Uint8List jsonMapToBytes(Map<String, dynamic>? map) {
if (map == null) {
return Uint8List.fromList([]);
} else {
String text = kEncoder.convert(map);
var l = utf8.encode(text);
var bytes = Uint8List.fromList(l);
return bytes;
}
}