workspace

This commit is contained in:
Ashita Prasad
2024-09-08 15:17:21 +05:30
parent bd5c83525e
commit 802d9e4607
14 changed files with 220 additions and 67 deletions

View File

@ -60,3 +60,4 @@ export 'tabs.dart';
export 'texts.dart';
export 'uint8_audio_player.dart';
export 'window_caption.dart';
export 'workspace_selector.dart';

View File

@ -0,0 +1,62 @@
import 'package:file_selector/file_selector.dart';
import 'package:apidash/services/hive_services.dart';
import 'package:flutter/material.dart';
class WorkspaceSelector extends StatefulWidget {
final Future<void> Function(String)? onSelect;
const WorkspaceSelector({
super.key,
required this.onSelect,
});
@override
WorkspaceSelectorState createState() => WorkspaceSelectorState();
}
class WorkspaceSelectorState extends State<WorkspaceSelector> {
void selectFolder() async {
String? selectedDirectory = await getDirectoryPath();
if (selectedDirectory != null) {
widget.onSelect?.call(selectedDirectory);
}
}
@override
Widget build(BuildContext context) {
const circularLoader = MaterialApp(
home: Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
),
);
return FutureBuilder<String?>(
future: getHiveSaveFolder(),
builder: (BuildContext context, AsyncSnapshot<String?> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return circularLoader;
}
// If there isn't hive selected folder choose it
if (snapshot.data == null) {
selectFolder();
return circularLoader;
}
// Once _hiveSaveFolder is set, display DashApp after hive init
return FutureBuilder<void>(
future: openHiveBoxes(snapshot.data!),
builder: (BuildContext context, AsyncSnapshot<void> snapshot) {
// if loading show circularLoader
if (snapshot.connectionState != ConnectionState.done) {
return circularLoader;
}
// Display widget
return widget.child;
},
);
},
);
}
}