mirror of
https://github.com/foss42/apidash.git
synced 2025-09-21 12:41:23 +08:00
Export API Dash collection
This commit is contained in:
@ -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()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user