import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:permission_handler/permission_handler.dart'; import 'database/database.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); if (Platform.isAndroid) { var status = await Permission.manageExternalStorage.status; if (!status.isGranted) { await Permission.manageExternalStorage.request(); for (var i = 0; i < 30; i++) { await Future.delayed(const Duration(seconds: 1)); status = await Permission.manageExternalStorage.status; if (status.isGranted) break; } if (!status.isGranted) { runApp( const ProviderScope(child: _PermissionDeniedApp()), ); return; } } } await AppDatabase.ensureDatabaseReady(); runApp( const ProviderScope(child: RistorisApp()), ); } class _PermissionDeniedApp extends StatelessWidget { const _PermissionDeniedApp(); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Padding( padding: const EdgeInsets.all(32), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Icon( Icons.folder_off, size: 64, color: Colors.red, ), const SizedBox(height: 24), const Text( 'Permesso di accesso ai file non concesso', textAlign: TextAlign.center, style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 12), const Text( 'L\'app ha bisogno di accedere alla memoria del dispositivo per salvare il database.', textAlign: TextAlign.center, ), const SizedBox(height: 24), FilledButton.icon( onPressed: () => openAppSettings(), icon: const Icon(Icons.settings), label: const Text('Apri Impostazioni'), ), ], ), ), ), ), ); } }