| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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'),
- ),
- ],
- ),
- ),
- ),
- ),
- );
- }
- }
|