This commit is contained in:
J. A. Messias 2024-10-15 16:07:03 -03:00
parent 0661db5fcd
commit 148b10b81e
17 changed files with 216 additions and 191 deletions

View File

@ -47,22 +47,22 @@ android {
defaultConfig { defaultConfig {
applicationId "com.freaccess.hub" applicationId "com.freaccess.hub"
minSdkVersion 21 minSdkVersion 23
targetSdkVersion 34 targetSdkVersion 34
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
multiDexEnabled true multiDexEnabled true
consumerProguardFiles 'proguard.txt' consumerProguardFiles 'proguard-rules.pro'
} }
compileOptions { compileOptions {
coreLibraryDesugaringEnabled true coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_18
} }
kotlinOptions { kotlinOptions {
jvmTarget = "11" jvmTarget = "18"
} }
signingConfigs { signingConfigs {
@ -88,9 +88,15 @@ android {
buildTypes { buildTypes {
release { release {
signingConfig = signingConfigs.release signingConfig = signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
debug { debug {
signingConfig signingConfigs.debug signingConfig signingConfigs.debug
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
} }
} }
@ -104,9 +110,12 @@ dependencies {
implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:multidex:1.0.3'
implementation 'androidx.window:window:1.0.0' implementation 'androidx.window:window:1.0.0'
implementation 'androidx.window:window-java:1.0.0' implementation 'androidx.window:window-java:1.0.0'
implementation 'com.google.mlkit:face-detection:16.1.7'
implementation ('com.google.firebase:firebase-messaging:24.0.0') { implementation ('com.google.firebase:firebase-messaging:24.0.0') {
exclude group: 'com.google.firebase', module: 'firebase-iid' exclude group: 'com.google.firebase', module: 'firebase-iid'
} }
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
} }
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'

View File

@ -16,4 +16,11 @@
# Keep rules to prevent R8 from removing necessary classes # Keep rules to prevent R8 from removing necessary classes
-dontwarn com.google.j2objc.annotations.RetainedWith -dontwarn com.google.j2objc.annotations.RetainedWith
-keep class com.google.j2objc.annotations.RetainedWith { *; } -keep class com.google.j2objc.annotations.RetainedWith { *; }
-keep class com.google.common.reflect.TypeToken
-keep class * extends com.google.common.reflect.TypeToken
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class com.google.common.reflect.TypeToken { *; }

View File

@ -30,46 +30,33 @@
android:turnScreenOn="true"> android:turnScreenOn="true">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.NormalTheme" android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" android:resource="@style/NormalTheme"
/> />
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable" android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" android:resource="@drawable/launch_background"
/> />
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" /> <meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="true"> <intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="freaccess.com.br" android:pathPrefix="/freaccess/alterarSenha.php" /> <data android:scheme="https" android:host="freaccess.com.br" android:pathPrefix="/freaccess/alterarSenha.php" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="true"> <intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="freaccess" /> <data android:scheme="freaccess" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="true"> <intent-filter android:autoVerify="true">
<action android:name="mensagem" /> <action android:name="mensagem" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
@ -109,7 +96,7 @@
android:value="2" /> android:value="2" />
<receiver android:exported="false" <!-- <receiver android:exported="false"
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" /> android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
<receiver android:exported="false" <receiver android:exported="false"
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"> android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
@ -119,7 +106,7 @@
<action android:name="android.intent.action.QUICKBOOT_POWERON" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" /> <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
</intent-filter> </intent-filter>
</receiver> </receiver> -->
</application> </application>
<queries> <queries>

View File

@ -16,4 +16,11 @@
# Keep rules to prevent R8 from removing necessary classes # Keep rules to prevent R8 from removing necessary classes
-dontwarn com.google.j2objc.annotations.RetainedWith -dontwarn com.google.j2objc.annotations.RetainedWith
-keep class com.google.j2objc.annotations.RetainedWith { *; } -keep class com.google.j2objc.annotations.RetainedWith { *; }
-keep class com.google.common.reflect.TypeToken
-keep class * extends com.google.common.reflect.TypeToken
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class com.google.common.reflect.TypeToken { *; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

View File

@ -11,7 +11,8 @@ import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/dialog_util.dart';
import 'package:hub/shared/utils/storage_util.dart'; import 'package:hub/shared/utils/storage_util.dart';
Future<void> onMessageReceived(Map<String, dynamic> payload, String? extra, String? handleClick) async { Future<void> onMessageReceived(
Map<String, dynamic> payload, String? extra, String? handleClick) async {
final localId = jsonDecode(payload['local']!)['CLI_ID']; final localId = jsonDecode(payload['local']!)['CLI_ID'];
final cliUUID = StorageUtil().cliUUID; final cliUUID = StorageUtil().cliUUID;
@ -283,11 +284,10 @@ class NotificationService {
await AwesomeNotifications() await AwesomeNotifications()
.isNotificationAllowed() .isNotificationAllowed()
.then((isAllowed) async { .then((isAllowed) async {
final bool requestOSnotification = final bool requestOSnotification = StorageUtil().requestOSnotification;
StorageUtil().requestOSnotification;
if (!requestOSnotification) { if (requestOSnotification == false) {
if (!isAllowed) { if (isAllowed == false) {
StorageUtil().requestOSnotification = true; StorageUtil().requestOSnotification = true;
await AwesomeNotifications().requestPermissionToSendNotifications(); await AwesomeNotifications().requestPermissionToSendNotifications();
} }
@ -350,7 +350,7 @@ class NotificationService {
actionButtons: actionButtons, actionButtons: actionButtons,
schedule: scheduled schedule: scheduled
? NotificationInterval( ? NotificationInterval(
interval: interval, interval: Duration(seconds: interval!),
timeZone: timeZone:
await AwesomeNotifications().getLocalTimeZoneIdentifier(), await AwesomeNotifications().getLocalTimeZoneIdentifier(),
preciseAlarm: true) preciseAlarm: true)

View File

@ -17,17 +17,16 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/internationalization.dart'; import 'package:hub/flutter_flow/internationalization.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart'; import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart';
import 'package:hub/shared/helpers/shared_preferences_storage_helper.dart';
import 'package:hub/shared/utils/storage_util.dart'; import 'package:hub/shared/utils/storage_util.dart';
import 'package:responsive_framework/responsive_framework.dart'; import 'package:responsive_framework/responsive_framework.dart';
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() async { void main() async {
await initializeApp(); await initializeApp();
runApp(const App()); runApp(const App());
FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage); FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage);
} }
Future<void> initializeApp() async { Future<void> initializeApp() async {
@ -41,21 +40,30 @@ Future<void> initializeApp() async {
_initializeSystemSettings(); _initializeSystemSettings();
await _initializeFlutterFlow(); await _initializeFlutterFlow();
} }
Future<void> _initializeStorageHelpers() async { Future<void> _initializeStorageHelpers() async {
log('Initializing SharedPreferencesStorageHelper');
await SharedPreferencesStorageHelper().initialize();
log('Initializing SharedPreferencesStorageHelper');
await StorageUtil().ensureInitialization(); await StorageUtil().ensureInitialization();
} }
Future<void> _initializeTracking() async { Future<void> _initializeTracking() async {
await AppTrackingTransparency.requestTrackingAuthorization(); await AppTrackingTransparency.requestTrackingAuthorization();
} }
Future<void> _initializeFirebase() async { Future<void> _initializeFirebase() async {
await Firebase.initializeApp(); await Firebase.initializeApp();
} }
Future<void> _initializeNotificationService() async { Future<void> _initializeNotificationService() async {
await NotificationService.initialize(); await NotificationService.initialize();
} }
void _initializeUrlStrategy() { void _initializeUrlStrategy() {
setUrlStrategy(PathUrlStrategy()); setUrlStrategy(PathUrlStrategy());
} }
void _initializeSystemSettings() { void _initializeSystemSettings() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
if (kDebugMode) { if (kDebugMode) {
@ -67,6 +75,7 @@ void _initializeSystemSettings() {
} }
} }
} }
Future<void> _initializeFlutterFlow() async { Future<void> _initializeFlutterFlow() async {
await FlutterFlowTheme.initialize(); await FlutterFlowTheme.initialize();
await FFLocalizations.initialize(); await FFLocalizations.initialize();
@ -86,6 +95,7 @@ Future<void> _foregroundHandlerMessage(RemoteMessage message) async {
payload: Map<String, String>.from(message.data)); payload: Map<String, String>.from(message.data));
} }
} }
Future<void> _backgroundHandlerMessage(RemoteMessage message) async { Future<void> _backgroundHandlerMessage(RemoteMessage message) async {
if (message.data['click_action'] == 'enroll_cond') { if (message.data['click_action'] == 'enroll_cond') {
log('backgroundHandlerMessage'); log('backgroundHandlerMessage');
@ -103,8 +113,8 @@ class App extends StatefulWidget {
static _AppState of(BuildContext context) => static _AppState of(BuildContext context) =>
context.findAncestorStateOfType<_AppState>()!; context.findAncestorStateOfType<_AppState>()!;
} }
class _AppState extends State<App> {
class _AppState extends State<App> {
Locale? _locale = FFLocalizations.getStoredLocale(); Locale? _locale = FFLocalizations.getStoredLocale();
ThemeMode _themeMode = FlutterFlowTheme.themeMode; ThemeMode _themeMode = FlutterFlowTheme.themeMode;
late AppStateNotifier _appStateNotifier; late AppStateNotifier _appStateNotifier;
@ -145,12 +155,13 @@ class _AppState extends State<App> {
}), }),
), ),
); );
final Iterable<LocalizationsDelegate<dynamic>>? localizationsDelegates = const [ final Iterable<LocalizationsDelegate<dynamic>>? localizationsDelegates =
FFLocalizationsDelegate(), const [
GlobalMaterialLocalizations.delegate, FFLocalizationsDelegate(),
GlobalWidgetsLocalizations.delegate, GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate,
]; GlobalCupertinoLocalizations.delegate,
];
final Iterable<Locale> supportedLocales = const [ final Iterable<Locale> supportedLocales = const [
Locale('pt'), Locale('pt'),
Locale('en'), Locale('en'),
@ -179,6 +190,7 @@ class _AppState extends State<App> {
if (!isRecovered) openAppLink(uri); if (!isRecovered) openAppLink(uri);
}); });
} }
void openAppLink(Uri uri) { void openAppLink(Uri uri) {
final bool isRecovered = StorageUtil().isRecovered; final bool isRecovered = StorageUtil().isRecovered;
log('isRecovered: $isRecovered'); log('isRecovered: $isRecovered');
@ -187,28 +199,28 @@ class _AppState extends State<App> {
final String email = uri.queryParameters['email'] ?? ''; final String email = uri.queryParameters['email'] ?? '';
final String token = uri.queryParameters['token'] ?? ''; final String token = uri.queryParameters['token'] ?? '';
final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty; final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty;
if (isNotEmpty ) { if (isNotEmpty) {
final BuildContext context = StorageUtil().context!; final BuildContext context = StorageUtil().context!;
final MediaQueryData mediaQuery = MediaQuery.of(context); final MediaQueryData mediaQuery = MediaQuery.of(context);
final double height = mediaQuery.size.height * 0.6; final double height = mediaQuery.size.height * 0.6;
final FlutterFlowTheme theme = FlutterFlowTheme.of(context); final FlutterFlowTheme theme = FlutterFlowTheme.of(context);
final Widget screen = ForgotPasswordScreen(email: email, token: token); final Widget screen = ForgotPasswordScreen(email: email, token: token);
builder(context) => screen; builder(context) => screen;
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
builder: (context) => Padding(padding: MediaQuery.viewInsetsOf(context), child: builder(context)), builder: (context) => Padding(
isScrollControlled: true, padding: MediaQuery.viewInsetsOf(context), child: builder(context)),
// barrierColor: theme.primaryBackground.withOpacity(0.2), isScrollControlled: true,
backgroundColor: theme.primaryBackground, // barrierColor: theme.primaryBackground.withOpacity(0.2),
showDragHandle: true, backgroundColor: theme.primaryBackground,
useSafeArea: true, showDragHandle: true,
enableDrag: true, useSafeArea: true,
// isDismissible: true, enableDrag: true,
).whenComplete(() => StorageUtil().isRecovered = false); // isDismissible: true,
).whenComplete(() => StorageUtil().isRecovered = false);
} }
} }
void _setupFirebaseMessaging() async { void _setupFirebaseMessaging() async {
FirebaseMessaging messaging = FirebaseMessaging.instance; FirebaseMessaging messaging = FirebaseMessaging.instance;
RemoteMessage? initialMessage = await messaging.getInitialMessage(); RemoteMessage? initialMessage = await messaging.getInitialMessage();
@ -236,10 +248,12 @@ class _AppState extends State<App> {
} }
}); });
} }
void setLocale(String language) { void setLocale(String language) {
setState(() => _locale = createLocale(language)); setState(() => _locale = createLocale(language));
FFLocalizations.storeLocale(language); FFLocalizations.storeLocale(language);
} }
void setThemeMode(ThemeMode mode) { void setThemeMode(ThemeMode mode) {
setState(() { setState(() {
_themeMode = mode; _themeMode = mode;
@ -247,23 +261,28 @@ class _AppState extends State<App> {
}); });
} }
@override void initState() { @override
void initState() {
super.initState(); super.initState();
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
_appStateNotifier = AppStateNotifier.instance; _appStateNotifier = AppStateNotifier.instance;
_router = createRouter(_appStateNotifier); _router = createRouter(_appStateNotifier);
Future.delayed(const Duration(milliseconds: 1000), Future.delayed(const Duration(milliseconds: 1000),
() => setState(() => _appStateNotifier.stopShowingSplashImage())); () => setState(() => _appStateNotifier.stopShowingSplashImage()));
_setupFirebaseMessaging(); _setupFirebaseMessaging();
WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks());
} }
@override void dispose() {
@override
void dispose() {
_linkSubscription?.cancel(); _linkSubscription?.cancel();
super.dispose(); super.dispose();
} }
@override Widget build(BuildContext context) {
@override
Widget build(BuildContext context) {
return MaterialApp.router( return MaterialApp.router(
key: navigatorKey, key: navigatorKey,
title: 'FRE ACCESS HUB', title: 'FRE ACCESS HUB',
@ -277,5 +296,4 @@ class _AppState extends State<App> {
routerConfig: _router, routerConfig: _router,
); );
} }
} }

View File

@ -1,5 +1,4 @@
import 'dart:developer'; import 'dart:developer';
import 'package:hub/shared/utils/storage_util.dart'; import 'package:hub/shared/utils/storage_util.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:hub/shared/utils/cache_util.dart'; import 'package:hub/shared/utils/cache_util.dart';
@ -8,6 +7,7 @@ class SharedPreferencesStorageHelper implements Storage {
static final SharedPreferencesStorageHelper _instance = static final SharedPreferencesStorageHelper _instance =
SharedPreferencesStorageHelper._internal(); SharedPreferencesStorageHelper._internal();
SharedPreferences? _prefs; SharedPreferences? _prefs;
SharedPreferences? get prefs => _prefs; SharedPreferences? get prefs => _prefs;
set prefs(SharedPreferences? value) => _prefs = value; set prefs(SharedPreferences? value) => _prefs = value;
@ -17,47 +17,38 @@ class SharedPreferencesStorageHelper implements Storage {
static SharedPreferencesStorageHelper get instance => _instance; static SharedPreferencesStorageHelper get instance => _instance;
Future<void> _setAndCache<T>(String key, T value, Function(T) cacheSetter, Future<void> initialize() async => _prefs = await SharedPreferences.getInstance();
Future<void> Function(String, T) setFunc) async {
Future<void> _setAndCache<T>(String key, T value, Function(T) cacheSetter, Future<void> Function(String, T) setFunc) async {
log('setAndCache value for key: $key to $value'); log('setAndCache value for key: $key to $value');
await setFunc(key, value); await setFunc(key, value);
CacheUtil.instance.set(key, value); CacheUtil.instance.set(key, value);
cacheSetter(value); cacheSetter(value);
} }
Future<void> _setAndCacheString(String key, String value, Function(String) cacheSetter) async {
Future<void> _setAndCacheString(
String key, String value, Function(String) cacheSetter) async {
log('setAndCacheString value for key: $key to $value'); log('setAndCacheString value for key: $key to $value');
await _setAndCache(key, value, cacheSetter, _prefs!.setString); await _setAndCache(key, value, cacheSetter, _prefs!.setString);
} }
Future<void> _setAndCacheBool(String key, bool value, Function(bool) cacheSetter) async {
Future<void> _setAndCacheBool(
String key, bool value, Function(bool) cacheSetter) async {
log('setAndCacheBool value for key: $key to $value'); log('setAndCacheBool value for key: $key to $value');
await _setAndCache(key, value, cacheSetter, _prefs!.setBool); await _setAndCache(key, value, cacheSetter, _prefs!.setBool);
} }
Future<void> _setAndCacheInt(String key, int value, Function(int) cacheSetter) async {
Future<void> _setAndCacheInt(
String key, int value, Function(int) cacheSetter) async {
log('setAndCacheInt value for key: $key to $value'); log('setAndCacheInt value for key: $key to $value');
await _setAndCache(key, value, cacheSetter, _prefs!.setInt); await _setAndCache(key, value, cacheSetter, _prefs!.setInt);
} }
Future<void> _setAndCacheDouble(String key, double value, Function(double) cacheSetter) async {
Future<void> _setAndCacheDouble(
String key, double value, Function(double) cacheSetter) async {
log('setAndCacheDouble value for key: $key to $value'); log('setAndCacheDouble value for key: $key to $value');
await _setAndCache(key, value, cacheSetter, _prefs!.setDouble); await _setAndCache(key, value, cacheSetter, _prefs!.setDouble);
} }
Future<void> _setAndCacheStringList(String key, List<String> value, Function(List<String>) cacheSetter) async {
Future<void> _setAndCacheStringList(String key, List<String> value,
Function(List<String>) cacheSetter) async {
log('setAndCacheStringList value for key: $key to $value'); log('setAndCacheStringList value for key: $key to $value');
await _setAndCache(key, value, cacheSetter, _prefs!.setStringList); await _setAndCache(key, value, cacheSetter, _prefs!.setStringList);
} }
@override
Future<void> set( @override Future<void> set(String key, dynamic value, Function(dynamic) cacheSetter) async {
String key, dynamic value, Function(dynamic) cacheSetter) async {
if (value is bool) { if (value is bool) {
log('() => setAndCacheBool $key to $value'); log('() => setAndCacheBool $key to $value');
await _prefs?.setBool(key, value); await _prefs?.setBool(key, value);
@ -72,9 +63,7 @@ class SharedPreferencesStorageHelper implements Storage {
} }
CacheUtil.instance.set(key, value); CacheUtil.instance.set(key, value);
} }
@override Future<dynamic> get(String key) async {
@override
Future<dynamic> get(String key) async {
log('Getting value for key: $key'); log('Getting value for key: $key');
var value = CacheUtil.instance.get(key); var value = CacheUtil.instance.get(key);
if (value == null) { if (value == null) {
@ -83,18 +72,16 @@ class SharedPreferencesStorageHelper implements Storage {
} }
return value; return value;
} }
@override Future<void> delete(String key) async {
@override
Future<void> delete(String key) async {
log('Deleting value for key: $key'); log('Deleting value for key: $key');
await _prefs?.remove(key); await _prefs?.remove(key);
CacheUtil.instance.delete(key); CacheUtil.instance.delete(key);
} }
@override Future<void> purge() async {
@override
Future<void> purge() async {
log('Purging shared preferences'); log('Purging shared preferences');
await _prefs?.clear(); await _prefs?.clear();
CacheUtil.instance.clear(); CacheUtil.instance.clear();
} }
} }

View File

@ -22,7 +22,6 @@ class StorageData {
final String key; final String key;
final dynamic value; final dynamic value;
final StorageType type; final StorageType type;
StorageData(this.key, this.value, this.type); StorageData(this.key, this.value, this.type);
} }
@ -35,10 +34,9 @@ class StorageUtil {
StorageUtil._internal(); StorageUtil._internal();
final SQLiteStorageHelper _sqliteStorage = SQLiteStorageHelper(); late final SQLiteStorageHelper _sqliteStorage;
final SecureStorageHelper _secureStorage = SecureStorageHelper(); late final SecureStorageHelper _secureStorage;
final SharedPreferencesStorageHelper _sharedPreferences = late final SharedPreferencesStorageHelper _sharedPreferences;
SharedPreferencesStorageHelper();
static Future<void> set(StorageData data) async { static Future<void> set(StorageData data) async {
try { try {
@ -120,21 +118,31 @@ class StorageUtil {
} }
Future<void> ensureInitialization() async { Future<void> ensureInitialization() async {
await initSQLiteStorage(); try {
await initSharedPreferences(); _sqliteStorage = SQLiteStorageHelper();
await initSecureStorage(); _secureStorage = SecureStorageHelper();
_sharedPreferences = SharedPreferencesStorageHelper();
await initSharedPreferences();
await initSecureStorage();
await initSQLiteStorage();
} catch (e, s) {
log('Error initializing storage: $e');
LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'StorageUtil', e, s);
}
} }
Future<void> initSharedPreferences() async { Future<void> initSharedPreferences() async {
try { try {
_sharedPreferences.prefs ??= await SharedPreferences.getInstance(); _sharedPreferences.prefs ??= await SharedPreferences.getInstance();
final bool milestone = final bool milestone =
_sharedPreferences.prefs?.getBool('milestone') ?? true; _sharedPreferences.prefs?.getBool('fre_isFirstRun') ?? true;
if (milestone) { if (milestone) {
isFirstRun = false; isFirstRun = false;
await _sharedPreferences.prefs?.setBool('milestone', false); await _sharedPreferences.prefs?.setBool('fre_isFirstRun', false);
_secureStorage.purge(); isLogged = false;
_sqliteStorage.purge(); // _secureStorage.purge();
// _sqliteStorage.purge();
} }
} catch (e, s) { } catch (e, s) {
log('SharedPreferencesStorageHelper: Error during initialization'); log('SharedPreferencesStorageHelper: Error during initialization');
@ -146,19 +154,21 @@ class StorageUtil {
Future<void> initSecureStorage() async { Future<void> initSecureStorage() async {
log('SecureStorageHelper: Starting initialization'); log('SecureStorageHelper: Starting initialization');
try { try {
_email = await _secureStorage.getString('ff_email'); _email = await _secureStorage.getString('fre_email');
_passwd = await _secureStorage.getString('ff_passwd'); _passwd = await _secureStorage.getString('fre_passwd');
_deviceType = await _secureStorage.getString('ff_deviceType'); _deviceType = await _secureStorage.getString('fre_deviceType');
_isLogged = await _secureStorage.getBool('ff_isLogged') ?? false; _isLogged = await _secureStorage.getBool('fre_isLogged') ?? false;
_tokenAPNS = await _secureStorage.getString('ff_tokenAPNS'); _tokenAPNS = await _secureStorage.getString('fre_tokenAPNS');
_accessPass = await _secureStorage.getString('accessPass'); _accessPass = await _secureStorage.getString('fre_accessPass');
_panicPass = await _secureStorage.getString('panicPass'); _panicPass = await _secureStorage.getString('fre_panicPass');
_fingerprintPass = await _secureStorage.getString('fingerprintPass'); _fingerprintPass = await _secureStorage.getString('fre_fingerprintPass');
_haveLocal = await _secureStorage.getBool('ff_have_local') ?? false; _haveLocal = await _secureStorage.getBool('fre_have_local') ?? false;
_deviceDescription = await _secureStorage.getString('deviceDescription'); _deviceDescription =
await _secureStorage.getString('fre_deviceDescription');
} catch (e, s) { } catch (e, s) {
log('SecureStorageHelper: Error during initialization: $e'); log('SecureStorageHelper: Error during initialization: $e');
LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SecureStorageHelper', e, s); LogUtil.requestAPIFailed(
'$UniqueKey', '$UniqueKey', 'SecureStorageHelper', e, s);
} }
log('SecureStorageHelper: Initialization complete'); log('SecureStorageHelper: Initialization complete');
} }
@ -166,30 +176,32 @@ class StorageUtil {
Future<void> initSQLiteStorage() async { Future<void> initSQLiteStorage() async {
log('SQLiteStorageHelper: Starting initialization'); log('SQLiteStorageHelper: Starting initialization');
try { try {
await _sqliteStorage.database; // await _sqliteStorage.database;
_devUUID = await _sqliteStorage.get('devUUID') ?? ''; _devUUID = await _sqliteStorage.get('fre_devUUID') ?? '';
_userUUID = await _sqliteStorage.get('userUUID') ?? ''; _userUUID = await _sqliteStorage.get('fre_userUUID') ?? '';
_userDevUUID = await _sqliteStorage.get('userDevUUID') ?? ''; _userDevUUID = await _sqliteStorage.get('fre_userDevUUID') ?? '';
_status = await _sqliteStorage.get('status') ?? ''; _status = await _sqliteStorage.get('fre_status') ?? '';
_userName = await _sqliteStorage.get('userName') ?? ''; _userName = await _sqliteStorage.get('fre_userName') ?? '';
_cliUUID = await _sqliteStorage.get('cliUUID') ?? ''; _cliUUID = await _sqliteStorage.get('fre_cliUUID') ?? '';
_ownerUUID = await _sqliteStorage.get('ownerUUID') ?? ''; _ownerUUID = await _sqliteStorage.get('fre_ownerUUID') ?? '';
_cliName = await _sqliteStorage.get('cliName') ?? ''; _cliName = await _sqliteStorage.get('fre_cliName') ?? '';
_petAmountRegister = await _sqliteStorage.get('petAmountRegister') ?? ''; _petAmountRegister =
_whatsapp = await _sqliteStorage.getBoolean('whatsapp'); await _sqliteStorage.get('fre_petAmountRegister') ?? '';
_provisional = await _sqliteStorage.getBoolean('provisional'); _whatsapp = await _sqliteStorage.getBoolean('fre_whatsapp');
_pets = await _sqliteStorage.getBoolean('pets'); _provisional = await _sqliteStorage.getBoolean('fre_provisional');
_local = await _sqliteStorage.getBoolean('local'); _pets = await _sqliteStorage.getBoolean('fre_pets');
_notify = await _sqliteStorage.getBoolean('notify'); _local = await _sqliteStorage.getBoolean('fre_local');
_fingerprint = await _sqliteStorage.getBoolean('fingerprint'); _notify = await _sqliteStorage.getBoolean('fre_notify');
_access = await _sqliteStorage.getBoolean('access'); _fingerprint = await _sqliteStorage.getBoolean('fre_fingerprint');
_panic = await _sqliteStorage.getBoolean('panic'); _access = await _sqliteStorage.getBoolean('fre_access');
_person = await _sqliteStorage.getBoolean('person'); _panic = await _sqliteStorage.getBoolean('fre_panic');
_person = await _sqliteStorage.getBoolean('fre_person');
_requestOSnotification = _requestOSnotification =
await _sqliteStorage.getBoolean('requestOSnotification'); await _sqliteStorage.getBoolean('fre_requestOSnotification');
} catch (e, s) { } catch (e, s) {
log('SQLiteStorageHelper: Error during initialization: $e'); log('SQLiteStorageHelper: Error during initialization: $e');
LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SQLiteStorageHelper', e, s); LogUtil.requestAPIFailed(
'$UniqueKey', '$UniqueKey', 'SQLiteStorageHelper', e, s);
} }
log('SQLiteStorageHelper: Initialization complete'); log('SQLiteStorageHelper: Initialization complete');
} }
@ -206,13 +218,11 @@ class StorageUtil {
String get tempToken => _tempToken; String get tempToken => _tempToken;
set tempToken(String value) => _tempToken = value; set tempToken(String value) => _tempToken = value;
bool _isFirstRun = true; bool _isFirstRun = true;
bool get isFirstRun => _isFirstRun; bool get isFirstRun => _isFirstRun;
set isFirstRun(bool value) { set isFirstRun(bool value) {
_isFirstRun = value; _isFirstRun = value;
_sharedPreferences.set('milestone', value, (v) => _isFirstRun = v); _sharedPreferences.set('fre_isFirstRun', value, (v) => _isFirstRun = v);
} }
String? _deviceDescription; String? _deviceDescription;
@ -220,218 +230,220 @@ class StorageUtil {
set deviceDescription(String value) { set deviceDescription(String value) {
_deviceDescription = value; _deviceDescription = value;
_secureStorage.set( _secureStorage.set(
'deviceDescription', value, (v) => _deviceDescription = v); 'fre_deviceDescription', value, (v) => _deviceDescription = v);
} }
BuildContext? _context; BuildContext? _context;
BuildContext? get context => _context; BuildContext? get context => _context;
set context(BuildContext? value) { set context(BuildContext? value) {
_context = value; _context = value;
_secureStorage.set('ff_context', value.toString(), (v) => _context = value); _secureStorage.set(
'fre_context', value.toString(), (v) => _context = value);
} }
bool _haveLocal = false; bool _haveLocal = false;
bool get haveLocal => _haveLocal; bool get haveLocal => _haveLocal;
set haveLocal(bool value) { set haveLocal(bool value) {
_haveLocal = value; _haveLocal = value;
_secureStorage.set('ff_have_local', value ?? false, (v) => _haveLocal = value); _secureStorage.set(
'fre_have_local', value ?? false, (v) => _haveLocal = value);
} }
String? _fingerprintPass; String? _fingerprintPass;
String get fingerprintPass => _fingerprintPass ?? ''; String get fingerprintPass => _fingerprintPass ?? '';
set fingerprintPass(String value) { set fingerprintPass(String value) {
_fingerprintPass = value; _fingerprintPass = value;
_secureStorage.set('fingerprintPass', value, (v) => _fingerprintPass = v); _secureStorage.set(
'fre_fingerprintPass', value, (v) => _fingerprintPass = v);
} }
String? _accessPass; String? _accessPass;
String get accessPass => _accessPass ?? ''; String get accessPass => _accessPass ?? '';
set accessPass(String value) { set accessPass(String value) {
_accessPass = value; _accessPass = value;
_secureStorage.set('accessPass', value, (v) => _accessPass = v); _secureStorage.set('fre_accessPass', value, (v) => _accessPass = v);
} }
String? _panicPass; String? _panicPass;
String get panicPass => _panicPass ?? ''; String get panicPass => _panicPass ?? '';
set panicPass(String value) { set panicPass(String value) {
_panicPass = value; _panicPass = value;
_secureStorage.set('panicPass', value, (v) => _panicPass = v); _secureStorage.set('fre_panicPass', value, (v) => _panicPass = v);
} }
String? _tokenAPNS; String? _tokenAPNS;
String? get tokenAPNS => _tokenAPNS; String? get tokenAPNS => _tokenAPNS;
set tokenAPNS(String? value) { set tokenAPNS(String? value) {
_tokenAPNS = value; _tokenAPNS = value;
_secureStorage.set('ff_tokenAPNS', value ?? '', (v) => _tokenAPNS = v); _secureStorage.set('fre_tokenAPNS', value ?? '', (v) => _tokenAPNS = v);
} }
String? _email; String? _email;
String get email => _email ?? ''; String get email => _email ?? '';
set email(String value) { set email(String value) {
_email = value; _email = value;
_secureStorage.set('ff_email', value, (v) => _email = v); _secureStorage.set('fre_email', value, (v) => _email = v);
} }
String? _passwd; String? _passwd;
String get passwd => _passwd ?? ''; String get passwd => _passwd ?? '';
set passwd(String value) { set passwd(String value) {
_passwd = value; _passwd = value;
_secureStorage.set('ff_passwd', value, (v) => _passwd = v); _secureStorage.set('fre_passwd', value, (v) => _passwd = v);
} }
String? _deviceType; String? _deviceType;
String get deviceType => _deviceType ?? ''; String get deviceType => _deviceType ?? '';
set deviceType(String value) { set deviceType(String value) {
_deviceType = value; _deviceType = value;
_secureStorage.set('ff_deviceType', value, (v) => _deviceType = v); _secureStorage.set('fre_deviceType', value, (v) => _deviceType = v);
} }
bool _isLogged = false; bool _isLogged = false;
bool get isLogged => _isLogged; bool get isLogged => _isLogged;
set isLogged(bool value) { set isLogged(bool value) {
_isLogged = value; _isLogged = value;
_secureStorage.set('ff_isLogged', value, (v) => _isLogged = v); _secureStorage.set('fre_isLogged', value, (v) => _isLogged = v);
} }
String? _token; String? _token;
String get token => _token ?? ''; String get token => _token ?? '';
set token(String value) { set token(String value) {
_token = value; _token = value;
_secureStorage.set('ff_token', value, (v) => _token = v); _secureStorage.set('fre_token', value, (v) => _token = v);
} }
String _devUUID = ''; String _devUUID = '';
String get devUUID => _devUUID; String get devUUID => _devUUID;
set devUUID(String value) { set devUUID(String value) {
_devUUID = value; _devUUID = value;
_sqliteStorage.set('devUUID', value, (v) {}); _sqliteStorage.set('fre_devUUID', value, (v) {});
} }
String _userUUID = ''; String _userUUID = '';
String get userUUID => _userUUID; String get userUUID => _userUUID;
set userUUID(String value) { set userUUID(String value) {
_userUUID = value; _userUUID = value;
_sqliteStorage.set('userUUID', value, (v) {}); _sqliteStorage.set('fre_userUUID', value, (v) {});
} }
String _userDevUUID = ''; String _userDevUUID = '';
String get userDevUUID => _userDevUUID; String get userDevUUID => _userDevUUID;
set userDevUUID(String value) { set userDevUUID(String value) {
_userDevUUID = value; _userDevUUID = value;
_sqliteStorage.set('userDevUUID', value, (v) {}); _sqliteStorage.set('fre_userDevUUID', value, (v) {});
} }
String _status = ''; String _status = '';
String get status => _status; String get status => _status;
set status(String value) { set status(String value) {
_status = value; _status = value;
_sqliteStorage.set('status', value, (v) {}); _sqliteStorage.set('fre_status', value, (v) {});
} }
String _userName = ''; String _userName = '';
String get userName => _userName; String get userName => _userName;
set userName(String value) { set userName(String value) {
_userName = value; _userName = value;
_sqliteStorage.set('userName', value, (v) {}); _sqliteStorage.set('fre_userName', value, (v) {});
} }
String _cliUUID = ''; String _cliUUID = '';
String get cliUUID => _cliUUID; String get cliUUID => _cliUUID;
set cliUUID(String value) { set cliUUID(String value) {
_cliUUID = value; _cliUUID = value;
_sqliteStorage.set('cliUUID', value, (v) {}); _sqliteStorage.set('fre_cliUUID', value, (v) {});
} }
String _ownerUUID = ''; String _ownerUUID = '';
String get ownerUUID => _ownerUUID; String get ownerUUID => _ownerUUID;
set ownerUUID(String value) { set ownerUUID(String value) {
_ownerUUID = value; _ownerUUID = value;
_sqliteStorage.set('ownerUUID', value, (v) {}); _sqliteStorage.set('fre_ownerUUID', value, (v) {});
} }
String _cliName = ''; String _cliName = '';
String get cliName => _cliName; String get cliName => _cliName;
set cliName(String value) { set cliName(String value) {
_cliName = value; _cliName = value;
_sqliteStorage.set('cliName', value, (v) {}); _sqliteStorage.set('fre_cliName', value, (v) {});
} }
String _petAmountRegister = ''; String _petAmountRegister = '';
String get petAmountRegister => _petAmountRegister; String get petAmountRegister => _petAmountRegister;
set petAmountRegister(String value) { set petAmountRegister(String value) {
_petAmountRegister = value; _petAmountRegister = value;
_sqliteStorage.set('petAmountRegister', value, (v) {}); _sqliteStorage.set('fre_petAmountRegister', value, (v) {});
} }
bool _whatsapp = false; bool _whatsapp = false;
bool get whatsapp => _whatsapp; bool get whatsapp => _whatsapp;
set whatsapp(bool value) { set whatsapp(bool value) {
_whatsapp = value; _whatsapp = value;
_sqliteStorage.set('whatsapp', value, (v) {}); _sqliteStorage.set('fre_whatsapp', value, (v) {});
} }
bool _provisional = false; bool _provisional = false;
bool get provisional => _provisional; bool get provisional => _provisional;
set provisional(bool value) { set provisional(bool value) {
_provisional = value; _provisional = value;
_sqliteStorage.set('provisional', value, (v) {}); _sqliteStorage.set('fre_provisional', value, (v) {});
} }
bool _pets = false; bool _pets = false;
bool get pets => _pets; bool get pets => _pets;
set pets(bool value) { set pets(bool value) {
_pets = value; _pets = value;
_sqliteStorage.set('pets', value, (v) {}); _sqliteStorage.set('fre_pets', value, (v) {});
} }
bool _local = false; bool _local = false;
bool get local => _local; bool get local => _local;
set local(bool value) { set local(bool value) {
_local = value; _local = value;
_sqliteStorage.set('local', value, (v) {}); _sqliteStorage.set('fre_local', value, (v) {});
} }
bool _notify = false; bool _notify = false;
bool get notify => _notify; bool get notify => _notify;
set notify(bool value) { set notify(bool value) {
_notify = value; _notify = value;
_sqliteStorage.set('notify', value, (v) {}); _sqliteStorage.set('fre_notify', value, (v) {});
} }
bool _fingerprint = false; bool _fingerprint = false;
bool get fingerprint => _fingerprint; bool get fingerprint => _fingerprint;
set fingerprint(bool value) { set fingerprint(bool value) {
_fingerprint = value; _fingerprint = value;
_sqliteStorage.set('fingerprint', value, (v) {}); _sqliteStorage.set('fre_fingerprint', value, (v) {});
} }
bool _access = false; bool _access = false;
bool get access => _access; bool get access => _access;
set access(bool value) { set access(bool value) {
_access = value; _access = value;
_sqliteStorage.set('access', value, (v) {}); _sqliteStorage.set('fre_access', value, (v) {});
} }
bool _panic = false; bool _panic = false;
bool get panic => _panic; bool get panic => _panic;
set panic(bool value) { set panic(bool value) {
_panic = value; _panic = value;
_sqliteStorage.set('panic', value, (v) {}); _sqliteStorage.set('fre_panic', value, (v) {});
} }
bool _person = false; bool _person = false;
bool get person => _person; bool get person => _person;
set person(bool value) { set person(bool value) {
_person = value; _person = value;
_sqliteStorage.set('person', value, (v) {}); _sqliteStorage.set('fre_person', value, (v) {});
} }
bool _requestOSnotification = false; bool _requestOSnotification = false;
bool get requestOSnotification => _requestOSnotification; bool get requestOSnotification => _requestOSnotification;
set requestOSnotification(bool value) { set requestOSnotification(bool value) {
_requestOSnotification = value; _requestOSnotification = value;
_sqliteStorage.set('requestOSnotification', value, (v) {}); _sqliteStorage.set('fre_requestOSnotification', value, (v) {});
} }
String get createdAt => '0000-00-00 00:00:00'; String get createdAt => '0000-00-00 00:00:00';

2
log
View File

@ -1,2 +0,0 @@
[log] Error initializing notification manager: 'package:flutter_local_notifications/src/platform_flutter_local_notifications.dart': Failed assertion: line 1033 pos 12: 'callback != null': The backgroundHandler needs to be either a static function or a top
level function to be accessible as a Flutter entry point.

View File

@ -61,10 +61,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: args name: args
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.0" version: "2.6.0"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -85,10 +85,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: awesome_notifications name: awesome_notifications
sha256: d9e46ce7f5171ee1e9b1c5bc6dc40bd77528561f592842ce97ce3a0a9ae155ef sha256: d051ffb694a53da216ff13d02c8ec645d75320048262f7e6b3c1d95a4f54c902
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.3+1" version: "0.10.0"
barcode: barcode:
dependency: transitive dependency: transitive
description: description:
@ -157,18 +157,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: camera_android_camerax name: camera_android_camerax
sha256: "59a01443c280cf969449f4b72db9396e80e5a9e8f07a2500a042906a157ce894" sha256: e3627fdc2132d89212b8a8676679f5b07008c7e3d8ae00cea775c3397f9e742b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.9+2" version: "0.6.10"
camera_avfoundation: camera_avfoundation:
dependency: transitive dependency: transitive
description: description:
name: camera_avfoundation name: camera_avfoundation
sha256: "7c28969a975a7eb2349bc2cb2dfe3ad218a33dba9968ecfb181ce08c87486655" sha256: "0d04cec8715b59fb6dc60eefb47e69024f51233c570e475b886dc9290568bca7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.17+3" version: "0.9.17+4"
camera_platform_interface: camera_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -636,10 +636,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_riverpod name: flutter_riverpod
sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" sha256: "711d916456563f715bde1e139d7cfdca009f8264befab3ac9f8ded8b6ec26405"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.1" version: "2.5.3"
flutter_secure_storage: flutter_secure_storage:
dependency: "direct main" dependency: "direct main"
description: description:
@ -835,10 +835,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker_android name: image_picker_android
sha256: d3e5e00fdfeca8fd4ffb3227001264d449cc8950414c2ff70b0e06b9c628e643 sha256: d34e0d9e024e81321b2aeed7b202ec6181cc282e6a1c0c0b4e6ad07ef1065d82
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.12+15" version: "0.8.12+16"
image_picker_for_web: image_picker_for_web:
dependency: "direct main" dependency: "direct main"
description: description:
@ -851,10 +851,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker_ios name: image_picker_ios
sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" sha256: "4f0568120c6fcc0aaa04511cb9f9f4d29fc3d0139884b1d06be88dcec7641d6b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.12" version: "0.8.12+1"
image_picker_linux: image_picker_linux:
dependency: transitive dependency: transitive
description: description:
@ -1304,10 +1304,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: riverpod name: riverpod
sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d sha256: c86fedfb45dd1da98ee6493dd9374325cdf494e7d523ebfb0c387eecc5f7b5c9
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.1" version: "2.5.3"
rxdart: rxdart:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1328,10 +1328,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: share_plus_platform_interface name: share_plus_platform_interface
sha256: "6ababf341050edff57da8b6990f11f4e99eaba837865e2e6defe16d039619db5" sha256: c57c0bbfec7142e3a0f55633be504b796af72e60e3c791b44d5a017b985f7a48
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.0" version: "5.0.1"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1669,18 +1669,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: webview_flutter name: webview_flutter
sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.9.0" version: "4.10.0"
webview_flutter_android: webview_flutter_android:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_android name: webview_flutter_android
sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" sha256: "74693a212d990b32e0b7055d27db973a18abf31c53942063948cdfaaef9787ba"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.16.9" version: "4.0.0"
webview_flutter_platform_interface: webview_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:

View File

@ -55,7 +55,7 @@ dependencies:
image_picker_android: ^0.8.12+15 image_picker_android: ^0.8.12+15
image_picker_for_web: ^3.0.5 image_picker_for_web: ^3.0.5
persistent_bottom_nav_bar: ^6.2.1 persistent_bottom_nav_bar: ^6.2.1
image_picker_ios: 0.8.12 image_picker_ios: ^0.8.12+1
image_picker_platform_interface: 2.10.0 image_picker_platform_interface: 2.10.0
local_auth: ^2.2.0 local_auth: ^2.2.0
intl: ^0.19.0 intl: ^0.19.0
@ -97,7 +97,7 @@ dependencies:
qr_flutter: ^4.1.0 qr_flutter: ^4.1.0
permission_handler: ^11.3.1 permission_handler: ^11.3.1
firebase_crashlytics: ^4.0.1 firebase_crashlytics: ^4.0.1
awesome_notifications: ^0.9.3+1 awesome_notifications: ^0.10.0
app_tracking_transparency: ^2.0.6 app_tracking_transparency: ^2.0.6
dio: ^5.7.0 dio: ^5.7.0
crypto: ^3.0.5 crypto: ^3.0.5