import 'package:flutter/material.dart'; import 'package:saf/saf.dart'; import 'package:sheetless/sheetview.dart'; import 'package:path_provider/path_provider.dart'; import 'api.dart'; import 'sheet.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Sheetless', theme: ThemeData( useMaterial3: true, primarySwatch: Colors.blue, ), home: const MyHomePage(), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { ApiClient apiClient = ApiClient(); Future apiLoggedIn = Future.value(false); @override void initState() { super.initState(); apiLoggedIn = apiClient.login("admin@admin.com", "sheetable"); } // Future getSafPickedSheetsDirectory() async { // await Permission.storage.request(); // await Permission.manageExternalStorage.request(); // var pickedDirectories = await Saf.getPersistedPermissionDirectories(); // if (pickedDirectories == null || pickedDirectories.isEmpty) { // return null; // } // return pickedDirectories.last; // } Future> acquireSheets() async { // await Permission.storage.request(); // await Permission.manageExternalStorage.request(); // await apiLoggedIn; // TODO: check if really logged in (returns bool) return await apiClient.fetchSheets(); // return api.main(); // final directory = await getApplicationDocumentsDirectory(); // print("Directory is: $directory"); // String? sheetsDirectory = "/home/julian/Klavier"; // if (sheetsDirectory == null || sheetsDirectory.isEmpty) { // await Saf.getDynamicDirectoryPermission(grantWritePermission: false); // sheetsDirectory = "/home/julian/Klavier"; // if (sheetsDirectory == null || sheetsDirectory.isEmpty) { // throw Exception("No Directory selected"); // } // } // return List.empty(); // var sheetsDirectoryFiles = await Saf.getFilesPathFor(sheetsDirectory); // if (sheetsDirectoryFiles == null) { // await Saf.releasePersistedPermissions(); // throw Exception( // "Permissions for directory no longer valid or Directory deleted. Please restart app."); // } // return loadSheetsSorted(sheetsDirectoryFiles); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("My Sheets"), ), body: FutureBuilder( future: acquireSheets(), builder: (BuildContext context, AsyncSnapshot> snapshot) { if (snapshot.hasData) { return SheetsWidget( sheets: snapshot.data!, callback: (sheet) => Navigator.push( context, MaterialPageRoute( builder: (context) => SheetViewerPage( sheet: sheet, apiClient: apiClient, ), ), ), ); } else if (snapshot.hasError) { return Center( child: Text( style: Theme.of(context) .textTheme .displaySmall! .copyWith(color: Colors.red), textAlign: TextAlign.center, snapshot.error.toString())); } else { return const Center(child: CircularProgressIndicator()); } }), ); } }