flutter-freaccess-hub/lib/initialization.dart

120 lines
3.9 KiB
Dart

import 'dart:developer';
import 'dart:io';
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
import 'package:hub/features/notification/index.dart';
import 'package:hub/features/storage/index.dart';
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/nav/nav.dart';
Future<void> initializeBindings() async {
// await _initializeTracking();
WidgetsFlutterBinding.ensureInitialized();
await _initializeAppTrackingTransparency();
await StorageHelper().init();
await _initializeFirebase();
await _initializeNotificationService();
await _initializeUrlStrategy();
await _initializeSystemSettings();
await _initializeFlutterFlow();
await _initializeNav();
}
Future<void> _initializeAppTrackingTransparency() async {
if (Platform.isIOS) {
final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
await Future.delayed(const Duration(seconds: 2));
final request =
await AppTrackingTransparency.requestTrackingAuthorization();
if (request == TrackingStatus.authorized) {
log('Tracking authorized');
} else {
log('Tracking not authorized');
}
}
}
}
Future<void> _initializeFirebase() async {
log('Initializing Firebase...');
await Firebase.initializeApp();
log('Firebase initialized');
}
Future<void> _initializeNotificationService() async {
log('Initializing Notification Service...');
await NotificationService.initialize();
log('Notification Service initialized');
}
Future<void> _initializeUrlStrategy() async {
print('Initializing URL Strategy...');
setUrlStrategy(PathUrlStrategy());
log('URL Strategy initialized');
}
Future<void> _initializeSystemSettings() async {
print('Initializing System Settings...');
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
final crashlyticsInstance = FirebaseCrashlytics.instance;
if (kDebugMode) {
print('Debug mode');
await crashlyticsInstance.setCrashlyticsCollectionEnabled(false);
} else {
log('Release mode');
// bool unsentReports =
// await FirebaseCrashlytics.instance.checkForUnsentReports();
// if (unsentReports) {
// // Existem relatórios não enviados
// await crashlyticsInstance.sendUnsentReports();
// log('Existem relatórios de falhas não enviados.');
// } else {
// // Não existem relatórios não enviados
// log('Todos os relatórios de falhas foram enviados.');
// }
await crashlyticsInstance.setCrashlyticsCollectionEnabled(true);
if (crashlyticsInstance.isCrashlyticsCollectionEnabled) {
// Configura o tratamento de erros não capturados
FlutterError.onError = crashlyticsInstance.recordFlutterError;
crashlyticsInstance.checkForUnsentReports().then((unsentReports) {
if (unsentReports) {
crashlyticsInstance.sendUnsentReports();
print('Existem relatórios de falhas não enviados.');
} else {
print('Todos os relatórios de falhas foram enviados.');
}
}).catchError((error) {
print('Erro ao verificar ou enviar relatórios não enviados: $error');
});
}
print('Crashlytics enabled');
}
}
Future<void> _initializeFlutterFlow() async {
log('Initializing FlutterFlow...');
await FlutterFlowTheme.initialize();
await FFLocalizations.initialize();
log('FlutterFlow initialized');
}
Future<void> _initializeNav() async {
log('Initializing Nav...');
GoRouter.optionURLReflectsImperativeAPIs = true;
usePathUrlStrategy();
log('Nav initialized');
}