mirror of
https://github.com/foss42/apidash.git
synced 2025-09-22 13:16:11 +08:00
Export API Dash collection
This commit is contained in:
@ -203,4 +203,10 @@ class CollectionStateNotifier extends StateNotifier<List<RequestModel>?> {
|
|||||||
await hiveHandler.removeUnused();
|
await hiveHandler.removeUnused();
|
||||||
ref.read(saveDataStateProvider.notifier).update((state) => false);
|
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/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:apidash/providers/providers.dart';
|
import '../providers/providers.dart';
|
||||||
import 'package:apidash/widgets/widgets.dart';
|
import '../widgets/widgets.dart';
|
||||||
|
import '../utils/utils.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
|
||||||
class SettingsPage extends ConsumerStatefulWidget {
|
class SettingsPage extends ConsumerStatefulWidget {
|
||||||
@ -73,6 +74,24 @@ class _SettingsPageState extends ConsumerState<SettingsPage> {
|
|||||||
.update(saveResponses: value);
|
.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(
|
ListTile(
|
||||||
contentPadding: EdgeInsets.zero,
|
contentPadding: EdgeInsets.zero,
|
||||||
hoverColor: kColorTransparent,
|
hoverColor: kColorTransparent,
|
||||||
|
@ -98,3 +98,14 @@ Uint8List? stringToBytes(String? text) {
|
|||||||
return bytes;
|
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