diff --git a/.metadata b/.metadata index ec98142..6eb54a1 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: d79295af24c3ed621c33713ecda14ad196fd9c31 - channel: stable + revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: android + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: ios + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: linux + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: macos + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: web + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: windows + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/android/.project b/android/.project index 3964dd3..79bb12b 100644 --- a/android/.project +++ b/android/.project @@ -14,4 +14,15 @@ org.eclipse.buildship.core.gradleprojectnature + + + 1721135133511 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 2b6d83b..7c7a5b5 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,11 +1,11 @@ -arguments= -auto.sync=false +arguments=--init-script /var/folders/20/lrk1001d3v34wc_th8z_vgph0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/20/lrk1001d3v34wc_th8z_vgph0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle +auto.sync=true build.scans.enabled=false connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=/usr/lib/jvm/java-11-openjdk-amd64 +java.home=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home jvm.arguments= offline.mode=false override.workspace.settings=true diff --git a/android/app/build.gradle b/android/app/build.gradle index bcaadfc..33afcee 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,10 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" + id "com.google.gms.google-services" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +13,6 @@ def localProperties = new Properties() } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,74 +23,49 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -def mapsProperties = new Properties() - def localMapsPropertiesFile = rootProject.file('local_maps.properties') - if (localMapsPropertiesFile.exists()) { - project.logger.info('Load maps properties from local file') - localMapsPropertiesFile.withReader('UTF-8') { reader -> - mapsProperties.load(reader) - } - } else { - project.logger.info('Load maps properties from environment') - try { - mapsProperties['MAPS_API_KEY'] = System.getenv('MAPS_API_KEY') - } catch(NullPointerException e) { - project.logger.warn('Failed to load MAPS_API_KEY from environment.', e) - } - } -def mapsApiKey = mapsProperties.getProperty('MAPS_API_KEY') -if(mapsApiKey == null){ - mapsApiKey = "" - project.logger.error('Google Maps Api Key not configured. Set it in `local_maps.properties` or in the environment variable `MAPS_API_KEY`') -} - - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + namespace 'com.zenithaerospace.monitor' + + compileSdkVersion 34 + ndkVersion "25.2.9519653" sourceSets { main.java.srcDirs += 'src/main/kotlin' } - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + defaultConfig { + applicationId "com.zenithaerospace.monitor" + minSdkVersion 23 + targetSdkVersion 31 + multiDexEnabled true + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName +// manifestPlaceholders = [MAPS_API_KEY: mapsApiKey] + } + buildTypes { + release { + // Configuração de assinatura para o build de release + // (Substitua com sua própria configuração de assinatura) + signingConfig signingConfigs.debug + } + } - applicationId "com.zenithaerospace.monitor" - minSdkVersion 21 - targetSdkVersion 31 - multiDexEnabled true - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - manifestPlaceholders = [MAPS_API_KEY: mapsApiKey] - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } - compileOptions { - sourceCompatibility 1.8 - targetCompatibility 1.8 - } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } } flutter { - source '../..' + source '../..' } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation platform('com.google.firebase:firebase-bom:28.4.1') - implementation 'com.google.firebase:firebase-auth' - implementation 'com.google.android.gms:play-services-auth:19.2.0' - implementation 'com.android.support:multidex:1.0.3' + implementation platform('com.google.firebase:firebase-bom:33.1.2') + implementation 'com.google.firebase:firebase-auth' + implementation 'com.google.android.gms:play-services-auth:19.2.0' + implementation 'com.android.support:multidex:1.0.3' } diff --git a/android/app/google-services.json b/android/app/google-services.json deleted file mode 100644 index 540495c..0000000 --- a/android/app/google-services.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "project_info": { - "project_number": "647188572266", - "firebase_url": "https://zenith-monitor-a0d89.firebaseio.com", - "project_id": "zenith-monitor-a0d89", - "storage_bucket": "zenith-monitor-a0d89.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:647188572266:android:32f5b010a7468bbf5c0213", - "android_client_info": { - "package_name": "com.zenithaerospace.monitor" - } - }, - "oauth_client": [ - { - "client_id": "647188572266-lgq11v9n583h40cp5kikmst94lpd0bbr.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.zenithaerospace.monitor", - "certificate_hash": "91962c976e6dc576832709338bf58626c6de3fd9" - } - }, - { - "client_id": "647188572266-l4inuhtshf3p5cvo5srtao1r7tnvcdfd.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyAdFLNjRj6EtKgvuyeyZZb6lwmSneDCltw" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "647188572266-l4inuhtshf3p5cvo5srtao1r7tnvcdfd.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 3d57536..4c22646 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,17 +1,3 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.3.8' // Google Services' plugin - } -} - allprojects { repositories { google() @@ -21,10 +7,26 @@ allprojects { rootProject.buildDir = '../build' subprojects { + afterEvaluate { project -> + if (project.hasProperty('android')) { + project.android { + if (namespace == null) { + namespace project.group + } + // Avoid adding android.defaults.buildfeatures.buildconfig=true + // to your gradle.properties file because that property is deprecated in AGP 8.0 and is scheduled to be removed in AGP 9.0. + buildFeatures { + if (buildConfig == null) { + buildConfig true + } + } + } + } + } project.buildDir = "${rootProject.buildDir}/${project.name}" project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58a..acb8e75 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jun 23 08:50:38 CEST 2017 +#Tue Jul 16 09:50:51 BRT 2024 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +zipStoreBase=GRADLE_USER_HOME \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..6c3a7a2 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,26 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.0.2" apply false + id "org.jetbrains.kotlin.android" version "1.8.10" apply false + id "com.google.gms.google-services" version "4.4.2" apply false +} + +include ":app" \ No newline at end of file diff --git a/assets/images/devicon_google.png b/assets/images/devicon_google.png new file mode 100644 index 0000000..ef466fd Binary files /dev/null and b/assets/images/devicon_google.png differ diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..03fb71f --- /dev/null +++ b/firebase.json @@ -0,0 +1 @@ +{"flutter":{"platforms":{"android":{"default":{"projectId":"teste-firebase-zenith","appId":"1:767599767515:android:f96dbb868c7ca38e1e81fe","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"teste-firebase-zenith","configurations":{"android":"1:767599767515:android:f96dbb868c7ca38e1e81fe"}}}}}} \ No newline at end of file diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart index 522e2e9..7d9c2f2 100644 --- a/lib/firebase_options.dart +++ b/lib/firebase_options.dart @@ -1,5 +1,5 @@ // File generated by FlutterFire CLI. -// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members +// ignore_for_file: type=lint import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; import 'package:flutter/foundation.dart' show defaultTargetPlatform, kIsWeb, TargetPlatform; @@ -26,12 +26,25 @@ class DefaultFirebaseOptions { case TargetPlatform.android: return android; case TargetPlatform.iOS: - return ios; + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for ios - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); case TargetPlatform.macOS: throw UnsupportedError( 'DefaultFirebaseOptions have not been configured for macos - ' 'you can reconfigure this by running the FlutterFire CLI again.', ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); default: throw UnsupportedError( 'DefaultFirebaseOptions are not supported for this platform.', @@ -40,23 +53,10 @@ class DefaultFirebaseOptions { } static const FirebaseOptions android = FirebaseOptions( - apiKey: 'AIzaSyAdFLNjRj6EtKgvuyeyZZb6lwmSneDCltw', - appId: '1:647188572266:android:32f5b010a7468bbf5c0213', - messagingSenderId: '647188572266', - projectId: 'zenith-monitor-a0d89', - databaseURL: 'https://zenith-monitor-a0d89.firebaseio.com', - storageBucket: 'zenith-monitor-a0d89.appspot.com', - ); - - static const FirebaseOptions ios = FirebaseOptions( - apiKey: 'AIzaSyDb0CYZjgUE0WzIxc_vfR26VWh08FpRW3g', - appId: '1:647188572266:ios:3b7c8e4eb2980b995c0213', - messagingSenderId: '647188572266', - projectId: 'zenith-monitor-a0d89', - databaseURL: 'https://zenith-monitor-a0d89.firebaseio.com', - storageBucket: 'zenith-monitor-a0d89.appspot.com', - androidClientId: '647188572266-j3201qobbgvq19oqso8978l6t62tl13q.apps.googleusercontent.com', - iosClientId: '647188572266-c0r04kh4gg2f4jq60mg1dari157af9s9.apps.googleusercontent.com', - iosBundleId: 'com.example.zenithMonitor', + apiKey: 'AIzaSyAeOmRf75mRRVoXO1g4cm6wqVUoOuUf97I', + appId: '1:767599767515:android:f96dbb868c7ca38e1e81fe', + messagingSenderId: '767599767515', + projectId: 'teste-firebase-zenith', + storageBucket: 'teste-firebase-zenith.appspot.com', ); } diff --git a/lib/main.dart b/lib/main.dart index 488dd0a..8f7d4c1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:zenith_monitor/utils/services/authentication/google_auth.dart'; import 'package:zenith_monitor/utils/services/firestore_services/firestore_services.dart'; import 'package:zenith_monitor/widgets/not_found_screen.dart'; import 'firebase_options.dart'; @@ -45,7 +46,7 @@ class Application extends StatelessWidget { FirestoreServices fireServices = FirestoreServices(); return MultiBlocProvider( providers: [ - BlocProvider(create: (context) => LoginBloc()), + BlocProvider(create: (context) => LoginBloc(auth: GoogleAuth())), BlocProvider( create: (context) => DataBloc(usbManager: usbManager, fireServices: fireServices)), @@ -77,7 +78,7 @@ class Application extends StatelessWidget { routes: { '/login': (context) => const LoginScreen(), '/signup': (context) => const SignUpScreen(), - '/forgotPwd': (context) => const ForgotMyPassword(), + // '/forgotPwd': (context) => const ForgotMyPassword(), '/map': (context) => const MapScreen(), '/configuration': (context) => ConfigurationScreen(), '/terminal': (context) => const TerminalScreen(), diff --git a/lib/modules/configuration/bloc/mission_controller/mission_variables_bloc.dart b/lib/modules/configuration/bloc/mission_controller/mission_variables_bloc.dart index a6720df..5a6da25 100644 --- a/lib/modules/configuration/bloc/mission_controller/mission_variables_bloc.dart +++ b/lib/modules/configuration/bloc/mission_controller/mission_variables_bloc.dart @@ -35,7 +35,7 @@ class MissionVariablesBloc (result == ConnectivityResult.none) ? false : true; add(ConnectionChanged()); - }); + } as void Function(List event)?); dataBloc.stream.listen((event) { if (event is UsbDisconnectedState) { @@ -48,7 +48,6 @@ class MissionVariablesBloc }); } - @override Stream mapEventToState( MissionVariablesEvent event) async* { if (event is AddStandardVariableEvent) { diff --git a/lib/modules/configuration/screen/configuration_screen.dart b/lib/modules/configuration/screen/configuration_screen.dart index 4225048..2266c63 100644 --- a/lib/modules/configuration/screen/configuration_screen.dart +++ b/lib/modules/configuration/screen/configuration_screen.dart @@ -66,7 +66,9 @@ class ConfigurationScreen extends StatelessWidget { (MissionVariablesBloc bloc) => bloc.connections); return FutureBuilder( - future: Connectivity().checkConnectivity(), + future: Connectivity() + .checkConnectivity() + .then((results) => results.first), builder: (BuildContext context, AsyncSnapshot snapshot) { diff --git a/lib/modules/forget_password/bloc/forgot_pwd_bloc.dart b/lib/modules/forget_password/bloc/forgot_pwd_bloc.dart index 0896e04..21ca8e7 100644 --- a/lib/modules/forget_password/bloc/forgot_pwd_bloc.dart +++ b/lib/modules/forget_password/bloc/forgot_pwd_bloc.dart @@ -1,29 +1,29 @@ -import 'package:bloc/bloc.dart'; -import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; -import 'package:zenith_monitor/utils/services/authentication/email_password_auth.dart'; +// import 'package:bloc/bloc.dart'; +// import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; +// // import 'package:zenith_monitor/utils/services/authentication/email_password_auth.dart'; -part 'forgot_pwd_state.dart'; -part 'forgot_pwd_event.dart'; +// part 'forgot_pwd_state.dart'; +// part 'forgot_pwd_event.dart'; -class ForgotPwdBloc extends Bloc { - ForgotPwdBloc() : super(ForgotPwdInitialState()); +// class ForgotPwdBloc extends Bloc { +// ForgotPwdBloc() : super(ForgotPwdInitialState()); - @override - Stream mapEventToState(ForgotPwdEvent event) async* { - if (event is PwdResetEmail) { - yield LoadingState(); - EmailAndPasswordAuth _auth = EmailAndPasswordAuth(); - try { - await _auth.resetPassword(event.email); - yield ForgotPwdSuccess(); - } on UserNotFound { - yield ForgotPwdError(errorMessage: "Usuário não encontrado"); - } on EmailBadlyFormatted { - yield ForgotPwdError( - errorMessage: "O email não está na formatação correta"); - } catch (e) { - print(e.toString()); - } - } - } -} +// @override +// Stream mapEventToState(ForgotPwdEvent event) async* { +// if (event is PwdResetEmail) { +// yield LoadingState(); +// EmailAndPasswordAuth _auth = EmailAndPasswordAuth(); +// try { +// await _auth.resetPassword(event.email); +// yield ForgotPwdSuccess(); +// } on UserNotFound { +// yield ForgotPwdError(errorMessage: "Usuário não encontrado"); +// } on EmailBadlyFormatted { +// yield ForgotPwdError( +// errorMessage: "O email não está na formatação correta"); +// } catch (e) { +// print(e.toString()); +// } +// } +// } +// } diff --git a/lib/modules/forget_password/screen/forgot_my_password_screen.dart b/lib/modules/forget_password/screen/forgot_my_password_screen.dart index 24ecdde..4bdb3a0 100644 --- a/lib/modules/forget_password/screen/forgot_my_password_screen.dart +++ b/lib/modules/forget_password/screen/forgot_my_password_screen.dart @@ -1,48 +1,48 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:zenith_monitor/constants/colors_constants.dart'; -import 'package:zenith_monitor/modules/forget_password/bloc/forgot_pwd_bloc.dart'; -import 'package:zenith_monitor/utils/ui/animations/zenith_progress_indicator.dart'; -import 'package:zenith_monitor/widgets/forgot_my_password.dart'; +// import 'package:flutter/material.dart'; +// import 'package:flutter_bloc/flutter_bloc.dart'; +// import 'package:zenith_monitor/constants/colors_constants.dart'; +// import 'package:zenith_monitor/modules/forget_password/bloc/forgot_pwd_bloc.dart'; +// import 'package:zenith_monitor/utils/ui/animations/zenith_progress_indicator.dart'; +// import 'package:zenith_monitor/widgets/forgot_my_password.dart'; -class ForgotMyPassword extends StatelessWidget { - const ForgotMyPassword(); +// class ForgotMyPassword extends StatelessWidget { +// const ForgotMyPassword(); - @override - Widget build(BuildContext context) { - return BlocProvider( - create: (context) => ForgotPwdBloc(), - child: SafeArea( - child: Scaffold( - body: BlocBuilder( - builder: (context, state) { - String? statusMessage; - Color? messageColor; - if (state is LoadingState) { - return const ZenithProgressIndicator( - size: 100, fileName: "z_icon_white.png"); - } - if (state is ForgotPwdSuccess) { - statusMessage = - "Um email para recuperação de senha foi enviado com sucesso"; - messageColor = mantisGreen; - } +// @override +// Widget build(BuildContext context) { +// return BlocProvider( +// create: (context) => ForgotPwdBloc(), +// child: SafeArea( +// child: Scaffold( +// body: BlocBuilder( +// builder: (context, state) { +// String? statusMessage; +// Color? messageColor; +// if (state is LoadingState) { +// return const ZenithProgressIndicator( +// size: 100, fileName: "z_icon_white.png"); +// } +// if (state is ForgotPwdSuccess) { +// statusMessage = +// "Um email para recuperação de senha foi enviado com sucesso"; +// messageColor = mantisGreen; +// } - if (state is ForgotPwdError) { - statusMessage = state.errorMessage; - messageColor = lightCoral; - } - return ForgotMyPasswordBody( - screenWidth: MediaQuery.of(context).size.width, - screenHeight: MediaQuery.of(context).size.height, - deviceOrientation: MediaQuery.of(context).orientation, - statusMessage: statusMessage, - messageColor: messageColor, - ); - }, - ), - backgroundColor: eerieBlack, - )), - ); - } -} +// if (state is ForgotPwdError) { +// statusMessage = state.errorMessage; +// messageColor = lightCoral; +// } +// return ForgotMyPasswordBody( +// screenWidth: MediaQuery.of(context).size.width, +// screenHeight: MediaQuery.of(context).size.height, +// deviceOrientation: MediaQuery.of(context).orientation, +// statusMessage: statusMessage, +// messageColor: messageColor, +// ); +// }, +// ), +// backgroundColor: eerieBlack, +// )), +// ); +// } +// } diff --git a/lib/modules/login/bloc/login_bloc.dart b/lib/modules/login/bloc/login_bloc.dart index f14e08a..9b54350 100644 --- a/lib/modules/login/bloc/login_bloc.dart +++ b/lib/modules/login/bloc/login_bloc.dart @@ -2,73 +2,43 @@ import 'package:bloc/bloc.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:zenith_monitor/modules/login/screen/login_screen.dart'; -import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; import 'package:zenith_monitor/utils/services/authentication/authentication.dart'; -import 'package:zenith_monitor/utils/services/authentication/email_password_auth.dart'; -import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; -import 'package:zenith_monitor/utils/services/authentication/facebook_auth.dart'; import 'package:zenith_monitor/utils/services/authentication/google_auth.dart'; import 'package:zenith_monitor/utils/services/user_firestore/user_document.dart'; -import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; -import 'package:zenith_monitor/utils/services/user_storage/user_storage.dart'; +import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; part 'login_state.dart'; part 'login_event.dart'; class LoginBloc extends Bloc { - LoginBloc() : super(LoginInitialState()); + late final Authentication _auth; - late LocalUser _user; - late Authentication _auth; + LoginBloc({required Authentication auth}) + : _auth = auth, + super(LoginInitialState()) { + on(_onGoogleLogin); + on(_onSignOut); + } - @override - Stream mapEventToState(LoginEvent event) async* { - if (event is AuthenticationEvent) { - yield LoadingState(); - try { - await event.loginCall(); - _user = await event.getUser(); - _auth = event.auth; - yield LoginSuccess(_user); - } on WrongPassword { - yield LoginError(errorMessage: "Senha errada"); - } on UserNotFound { - yield LoginError(errorMessage: "Usuário não encontrado"); - } on EmailBadlyFormatted { - yield LoginError( - errorMessage: "O email não está na formatação correta"); - } on NullUser { - yield LoginError( - errorMessage: - "Algum problema ocorreu durante a autenticação do usuário"); - } on EmailNotVerified { - yield LoginError( - errorMessage: "O email do usuário ainda não foi autenticado"); - } on UserFileNotFound { - yield LoginError( - errorMessage: - "Os dados do usuário não foram encontrados. Por favor, forneça-os novamente"); - //apresentar janela para fornecimento dos dados - } on AnotherCredentialUsed { - yield LoginError( - errorMessage: - "O email associado a este método de autenticação já foi utilizado em outro método. Por favor, utilize outro método."); - } on FirebaseProblem catch (e) { - print(e.errorType()); - yield LoginError( - errorMessage: - "Um problema ocorreu durante a utilização do banco de dados. Verifique se o email fornecido foi verificado."); - } catch (e) { - print(e.toString()); - yield LoginError(errorMessage: "Erro desconhecido"); - } - } else if (event is SignOutEvent) { - await _auth.signOut(); - Navigator.pushAndRemoveUntil( - event.context, - MaterialPageRoute( - builder: (BuildContext context) => const LoginScreen()), - ModalRoute.withName('/login')); + Future _onGoogleLogin( + GoogleLoginEvent event, Emitter emit) async { + emit(LoadingState()); + try { + await event.loginCall(); + LocalUser user = await event.getUser(); + emit(LoginSuccess(user)); + } catch (e) { + emit(LoginError(errorMessage: "Erro ao tentar fazer login: $e")); } } + + Future _onSignOut(SignOutEvent event, Emitter emit) async { + await _auth.signOut(); + Navigator.pushAndRemoveUntil( + // ignore: use_build_context_synchronously + event.context, + MaterialPageRoute(builder: (BuildContext context) => const LoginScreen()), + ModalRoute.withName('/login'), + ); + } } diff --git a/lib/modules/login/bloc/login_event.dart b/lib/modules/login/bloc/login_event.dart index ad2f0b3..919ed78 100644 --- a/lib/modules/login/bloc/login_event.dart +++ b/lib/modules/login/bloc/login_event.dart @@ -3,7 +3,7 @@ part of 'login_bloc.dart'; abstract class LoginEvent {} abstract class AuthenticationEvent extends LoginEvent { - Authentication auth; + final Authentication auth; AuthenticationEvent({required this.auth}); @@ -11,37 +11,12 @@ abstract class AuthenticationEvent extends LoginEvent { Future getUser(); } -class EmailLoginEvent extends AuthenticationEvent { - String email; - String password; - - EmailLoginEvent({required this.email, required this.password}) - : super(auth: EmailAndPasswordAuth()); - - @override - Future loginCall() async { - await EmailAndPasswordAuth().signIn(email, password); - } - - @override - Future getUser() async { - UserDocument userDocument = UserDocument(authMethod: auth); - DocumentSnapshot? userDocSnap = - await userDocument.getUserFirebaseDocument(); - if (userDocSnap == null) { - await UserStorage().uploadImage(); - } - - return await userDocument.getUserFirestore(userDocSnap); - } -} - class GoogleLoginEvent extends AuthenticationEvent { GoogleLoginEvent() : super(auth: GoogleAuth()); @override Future loginCall() async { - await GoogleAuth().signInwithGoogle(); + await auth.signInWithGoogle(); } @override @@ -53,20 +28,8 @@ class GoogleLoginEvent extends AuthenticationEvent { } } -class FacebookLoginEvent extends AuthenticationEvent { - FacebookLoginEvent() : super(auth: FacebookAuth()); - @override - Future loginCall() async { - await FacebookAuth().signInWithFacebook(); - } - - @override - Future getUser() async { - return await auth.getUserAuthentication(); - } -} - class SignOutEvent extends LoginEvent { - BuildContext context; + final BuildContext context; + SignOutEvent({required this.context}); } diff --git a/lib/modules/login/bloc/login_state.dart b/lib/modules/login/bloc/login_state.dart index c9d8df8..fe9d271 100644 --- a/lib/modules/login/bloc/login_state.dart +++ b/lib/modules/login/bloc/login_state.dart @@ -1,13 +1,15 @@ part of 'login_bloc.dart'; abstract class LoginState { - LocalUser? user; + late final LocalUser? user; + + LoginState({this.user}); } class LoginInitialState extends LoginState {} class LoginError extends LoginState { - String errorMessage; + final String errorMessage; LoginError({required this.errorMessage}); } @@ -15,7 +17,5 @@ class LoginError extends LoginState { class LoadingState extends LoginState {} class LoginSuccess extends LoginState { - LoginSuccess(LocalUser newUser) { - user = newUser; - } + LoginSuccess(LocalUser newUser) : super(user: newUser); } diff --git a/lib/modules/login/screen/login_screen.dart b/lib/modules/login/screen/login_screen.dart index 878ebaa..3322976 100644 --- a/lib/modules/login/screen/login_screen.dart +++ b/lib/modules/login/screen/login_screen.dart @@ -7,5 +7,26 @@ class LoginScreen extends StatelessWidget { @override Widget build(BuildContext context) { return const LoginWidget(); + // final ButtonStyle style = + // ElevatedButton.styleFrom(textStyle: const TextStyle(fontSize: 20)); + // return Center( + // child: Column( + // mainAxisSize: MainAxisSize.min, + // children: [ + // ElevatedButton( + // style: style, + // onPressed: () {}, + // child: Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Image.asset('assets/images/devicon_google.png', height: 20), + // const SizedBox(width: 10), + // const Text('Entrar com o Google'), + // ], + // ), + // ), + // ], + // ), + // ); } } diff --git a/lib/modules/signup/bloc/sign_up_bloc.dart b/lib/modules/signup/bloc/sign_up_bloc.dart index 0a582f2..6bb9d5f 100644 --- a/lib/modules/signup/bloc/sign_up_bloc.dart +++ b/lib/modules/signup/bloc/sign_up_bloc.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:bloc/bloc.dart'; import 'package:image_picker/image_picker.dart'; import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; -import 'package:zenith_monitor/utils/services/authentication/email_password_auth.dart'; +// import 'package:zenith_monitor/utils/services/authentication/email_password_auth.dart'; import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; import 'package:zenith_monitor/utils/services/user_storage/user_storage.dart'; @@ -13,11 +13,10 @@ part 'sign_up_event.dart'; class SignUpBloc extends Bloc { SignUpBloc() : super(SignUpInitial()); - EmailAndPasswordAuth auth = EmailAndPasswordAuth(); + // EmailAndPasswordAuth auth = EmailAndPasswordAuth(); UserStorage storage = UserStorage(); File? profileImage; - @override Stream mapEventToState(SignUpEvent event) async* { if (event is UserRegisterEvent) { yield LoadingState(); @@ -29,7 +28,7 @@ class SignUpBloc extends Bloc { if (event.password != event.pwdConfirmation) { yield SignUpError(errorMessage: "As senhas não batem"); } else { - await auth.register(event.newUser, event.password); + // await auth.register(event.newUser, event.password); yield SuccessfulSignup(); } } on WeakPassword { diff --git a/lib/utils/helpers/calc_text_size.dart b/lib/utils/helpers/calc_text_size.dart index 3599a55..634b7b3 100644 --- a/lib/utils/helpers/calc_text_size.dart +++ b/lib/utils/helpers/calc_text_size.dart @@ -1,11 +1,15 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; /// The function calcTextSize is used to get the size of a string based on its TextStyle Size calcTextSize(String text, TextStyle style) { + // TextScaler textScaler = TextScaler(WidgetsBinding.instance!.window.scale); + final TextPainter textPainter = TextPainter( text: TextSpan(text: text, style: style), textDirection: TextDirection.ltr, - textScaleFactor: WidgetsBinding.instance!.window.textScaleFactor, + textScaler: TextScaler.noScaling, )..layout(); return textPainter.size; } diff --git a/lib/utils/services/authentication/authentication.dart b/lib/utils/services/authentication/authentication.dart index 5905bb4..65ad341 100644 --- a/lib/utils/services/authentication/authentication.dart +++ b/lib/utils/services/authentication/authentication.dart @@ -1,9 +1,11 @@ import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:firebase_auth/firebase_auth.dart'; import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; abstract class Authentication { String type = ""; + Future signInWithGoogle(); Future getUserAuthentication(); Future userCreationConditions(DocumentSnapshot? userDoc); diff --git a/lib/utils/services/authentication/email_password_auth.dart b/lib/utils/services/authentication/email_password_auth.dart index 51f96e5..8c51965 100644 --- a/lib/utils/services/authentication/email_password_auth.dart +++ b/lib/utils/services/authentication/email_password_auth.dart @@ -1,107 +1,107 @@ -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; -import 'package:zenith_monitor/utils/mixins/class_user_file.dart'; -import 'package:zenith_monitor/utils/services/authentication/authentication.dart'; -import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; -import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; +// import 'package:cloud_firestore/cloud_firestore.dart'; +// import 'package:firebase_auth/firebase_auth.dart'; +// import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; +// import 'package:zenith_monitor/utils/mixins/class_user_file.dart'; +// import 'package:zenith_monitor/utils/services/authentication/authentication.dart'; +// import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; +// import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; -class EmailAndPasswordAuth extends Authentication { - final FirebaseAuth _auth = FirebaseAuth.instance; - final UserFile userFile = UserFile(); +// class EmailAndPasswordAuth extends Authentication { +// final FirebaseAuth _auth = FirebaseAuth.instance; +// final UserFile userFile = UserFile(); - EmailAndPasswordAuth() { - type = "Email and Password"; - } +// EmailAndPasswordAuth() { +// type = "Email and Password"; +// } - Future register(LocalUser newUser, String password) async { - try { - await _auth.createUserWithEmailAndPassword( - email: newUser.getEmail(), password: password); - User? firebaseUser = _auth.currentUser; +// Future register(LocalUser newUser, String password) async { +// try { +// await _auth.createUserWithEmailAndPassword( +// email: newUser.getEmail(), password: password); +// User? firebaseUser = _auth.currentUser; - if (firebaseUser != null) { - if (!firebaseUser.emailVerified) { - await firebaseUser.sendEmailVerification(); - } +// if (firebaseUser != null) { +// if (!firebaseUser.emailVerified) { +// await firebaseUser.sendEmailVerification(); +// } - firebaseUser.updateDisplayName(newUser.getCompleteName()); - firebaseUser.updateEmail(newUser.getEmail()); - firebaseUser.updatePhotoURL(newUser.getImageLink()); - userFile.writeUser(newUser); - _auth.signOut(); - } - } on FirebaseAuthException catch (e) { - if (e.code == 'weak-password') { - throw WeakPassword(); - } else if (e.code == 'email-already-in-use') { - throw EmailAlreadyInUse(); - } else if (e.code == "invalid-email") { - throw EmailBadlyFormatted(); - } else if (e.code == "invalid-email-verified") { - print("Erro invalid-email-verified"); - } - throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); - } catch (e) { - throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); - } - } +// firebaseUser.updateDisplayName(newUser.getCompleteName()); +// firebaseUser.updateEmail(newUser.getEmail()); +// firebaseUser.updatePhotoURL(newUser.getImageLink()); +// userFile.writeUser(newUser); +// _auth.signOut(); +// } +// } on FirebaseAuthException catch (e) { +// if (e.code == 'weak-password') { +// throw WeakPassword(); +// } else if (e.code == 'email-already-in-use') { +// throw EmailAlreadyInUse(); +// } else if (e.code == "invalid-email") { +// throw EmailBadlyFormatted(); +// } else if (e.code == "invalid-email-verified") { +// print("Erro invalid-email-verified"); +// } +// throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); +// } catch (e) { +// throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); +// } +// } - Future signIn(String email, String password) async { - try { - await _auth.signInWithEmailAndPassword(email: email, password: password); - } on FirebaseAuthException catch (e) { - if (e.code == "wrong-password") { - throw WrongPassword(); - } else if (e.code == "user-not-found") { - throw UserNotFound(); - } else if (e.code == "invalid-email") { - throw EmailBadlyFormatted(); - } - throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); - } catch (e) { - throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); - } - } +// Future signIn(String email, String password) async { +// try { +// await _auth.signInWithEmailAndPassword(email: email, password: password); +// } on FirebaseAuthException catch (e) { +// if (e.code == "wrong-password") { +// throw WrongPassword(); +// } else if (e.code == "user-not-found") { +// throw UserNotFound(); +// } else if (e.code == "invalid-email") { +// throw EmailBadlyFormatted(); +// } +// throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); +// } catch (e) { +// throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); +// } +// } - Future resetPassword(String email) async { - try { - await _auth.sendPasswordResetEmail(email: email); - } on FirebaseAuthException catch (e) { - if (e.code == "user-not-found") { - throw UserNotFound(); - } else if (e.code == "invalid-email") { - throw EmailBadlyFormatted(); - } - throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); - } catch (e) { - throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); - } - } +// Future resetPassword(String email) async { +// try { +// await _auth.sendPasswordResetEmail(email: email); +// } on FirebaseAuthException catch (e) { +// if (e.code == "user-not-found") { +// throw UserNotFound(); +// } else if (e.code == "invalid-email") { +// throw EmailBadlyFormatted(); +// } +// throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); +// } catch (e) { +// throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); +// } +// } - @override - Future userCreationConditions(DocumentSnapshot? userDoc) async { - if (userDoc == null || - !(userDoc.exists) || - userDoc.get('created_with') != "Email and Password") { - LocalUser newUser = await getUserAuthentication(); +// @override +// Future userCreationConditions(DocumentSnapshot? userDoc) async { +// if (userDoc == null || +// !(userDoc.exists) || +// userDoc.get('created_with') != "Email and Password") { +// LocalUser newUser = await getUserAuthentication(); - return newUser; - } +// return newUser; +// } - return null; - } +// return null; +// } - @override - Future getUserAuthentication() async { - UserFile file = UserFile(); - LocalUser? newUser = await file.readUser(); - if (newUser == null) throw UserFileNotFound(); - return newUser; - } +// @override +// Future getUserAuthentication() async { +// UserFile file = UserFile(); +// LocalUser? newUser = await file.readUser(); +// if (newUser == null) throw UserFileNotFound(); +// return newUser; +// } - @override - Future signOut() async { - await _auth.signOut(); - } -} +// @override +// Future signOut() async { +// await _auth.signOut(); +// } +// } diff --git a/lib/utils/services/authentication/facebook_auth.dart b/lib/utils/services/authentication/facebook_auth.dart index e3537e1..ca72b42 100644 --- a/lib/utils/services/authentication/facebook_auth.dart +++ b/lib/utils/services/authentication/facebook_auth.dart @@ -1,75 +1,75 @@ -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:flutter_facebook_auth/flutter_facebook_auth.dart' - as facebook_auth_method; -import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; -import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; -import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; -import 'authentication.dart'; - -/// Facebook's authentication has the problem that the current User has -/// its verified email property set to false. That's why it was chosen -/// not to use the user provided by Facebook as a way to write Firebase -/// documents. - -class FacebookAuth extends Authentication { - final FirebaseAuth _auth = FirebaseAuth.instance; - final facebook_auth_method.FacebookAuth _facebookAuth = - facebook_auth_method.FacebookAuth.instance; - - FacebookAuth() { - type = "Facebook"; - } - - Future signInWithFacebook() async { - try { - final facebook_auth_method.LoginResult result = - await _facebookAuth.login(); - - if (result.status == facebook_auth_method.LoginStatus.success) { - final AuthCredential facebookCredential = - FacebookAuthProvider.credential(result.accessToken!.token); - await _auth.signInWithCredential(facebookCredential); - } else if (result.status == facebook_auth_method.LoginStatus.cancelled) { - print(result.message); - } else if (result.status == facebook_auth_method.LoginStatus.failed) { - print(result.message); - } - } on FirebaseAuthException catch (e) { - if (e.code == "account-exists-with-different-credential") { - throw AnotherCredentialUsed(); - } - - throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); - } catch (e) { - print(e.toString()); - throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); - } - } - - @override - Future signOut() async { - await _facebookAuth.logOut(); - await _auth.signOut(); - } - - /// This method is not even necessary here, - /// it's used in Google and EmailAndPassword - /// authentication only. - @override - Future userCreationConditions(DocumentSnapshot? userDoc) async { - return null; - } - - @override - Future getUserAuthentication() async { - if (_auth.currentUser == null) throw NullUser(); - - final Map userData = await _facebookAuth.getUserData(); - - LocalUser user = LocalUser(userData["name"], "", userData["email"], - imageLink: userData["picture"]["data"]["url"]); - user.setAccessLevel("Normal User"); - return user; - } -} +// import 'package:cloud_firestore/cloud_firestore.dart'; +// import 'package:firebase_auth/firebase_auth.dart'; +// import 'package:flutter_facebook_auth/flutter_facebook_auth.dart' +// as facebook_auth_method; +// import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; +// import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; +// import 'package:zenith_monitor/utils/services/authentication/authentication_exceptions.dart'; +// import 'authentication.dart'; +// +// /// Facebook's authentication has the problem that the current User has +// /// its verified email property set to false. That's why it was chosen +// /// not to use the user provided by Facebook as a way to write Firebase +// /// documents. +// +// class FacebookAuth extends Authentication { +// final FirebaseAuth _auth = FirebaseAuth.instance; +// final facebook_auth_method.FacebookAuth _facebookAuth = +// facebook_auth_method.FacebookAuth.instance; +// +// FacebookAuth() { +// type = "Facebook"; +// } +// +// Future signInWithFacebook() async { +// try { +// final facebook_auth_method.LoginResult result = +// await _facebookAuth.login(); +// +// if (result.status == facebook_auth_method.LoginStatus.success) { +// final AuthCredential facebookCredential = +// FacebookAuthProvider.credential(result.accessToken!.token); +// await _auth.signInWithCredential(facebookCredential); +// } else if (result.status == facebook_auth_method.LoginStatus.cancelled) { +// print(result.message); +// } else if (result.status == facebook_auth_method.LoginStatus.failed) { +// print(result.message); +// } +// } on FirebaseAuthException catch (e) { +// if (e.code == "account-exists-with-different-credential") { +// throw AnotherCredentialUsed(); +// } +// +// throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); +// } catch (e) { +// print(e.toString()); +// throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); +// } +// } +// +// @override +// Future signOut() async { +// await _facebookAuth.logOut(); +// await _auth.signOut(); +// } +// +// /// This method is not even necessary here, +// /// it's used in Google and EmailAndPassword +// /// authentication only. +// @override +// Future userCreationConditions(DocumentSnapshot? userDoc) async { +// return null; +// } +// +// @override +// Future getUserAuthentication() async { +// if (_auth.currentUser == null) throw NullUser(); +// +// final Map userData = await _facebookAuth.getUserData(); +// +// LocalUser user = LocalUser(userData["name"], "", userData["email"], +// imageLink: userData["picture"]["data"]["url"]); +// user.setAccessLevel("Normal User"); +// return user; +// } +// } diff --git a/lib/utils/services/authentication/google_auth.dart b/lib/utils/services/authentication/google_auth.dart index 61eac86..fad548a 100644 --- a/lib/utils/services/authentication/google_auth.dart +++ b/lib/utils/services/authentication/google_auth.dart @@ -13,24 +13,23 @@ class GoogleAuth extends Authentication { type = "Google"; } - Future signInwithGoogle() async { - try { - final GoogleSignInAccount? googleSignInAccount = - await _googleSignIn.signIn(); - final GoogleSignInAuthentication googleSignInAuthentication = - await googleSignInAccount!.authentication; - final AuthCredential credential = GoogleAuthProvider.credential( - accessToken: googleSignInAuthentication.accessToken, - idToken: googleSignInAuthentication.idToken, - ); + @override + Future signInWithGoogle() async { + // Trigger the authentication flow + final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); - await _auth.signInWithCredential(credential); - } on FirebaseAuthException catch (e) { - throw FirebaseProblem(isFirebaseException: true, errorMsg: e.toString()); - } catch (e) { - print(e.toString()); - throw FirebaseProblem(isFirebaseException: false, errorMsg: e.toString()); - } + // Obtain the auth details from the request + final GoogleSignInAuthentication? googleAuth = + await googleUser?.authentication; + + // Create a new credential + final credential = GoogleAuthProvider.credential( + accessToken: googleAuth?.accessToken, + idToken: googleAuth?.idToken, + ); + + // Once signed in, return the UserCredential + return await FirebaseAuth.instance.signInWithCredential(credential); } @override diff --git a/lib/utils/services/user_storage/user_storage.dart b/lib/utils/services/user_storage/user_storage.dart index 9596c13..9b5b8a1 100644 --- a/lib/utils/services/user_storage/user_storage.dart +++ b/lib/utils/services/user_storage/user_storage.dart @@ -1,12 +1,10 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_storage/firebase_storage.dart'; -import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:image_cropper/image_cropper.dart'; import 'package:image_picker/image_picker.dart'; import 'dart:io'; -import 'package:zenith_monitor/constants/colors_constants.dart'; import 'package:zenith_monitor/utils/mixins/class_local_user.dart'; import 'package:zenith_monitor/utils/mixins/class_user_file.dart'; import 'package:zenith_monitor/utils/services/user_firestore/user_document_exceptions.dart'; @@ -64,19 +62,19 @@ class UserStorage { Future cropImage(File image) async { try { - File? cropped = await ImageCropper().cropImage( + File? cropped = (await ImageCropper().cropImage( sourcePath: image.path, - cropStyle: CropStyle.circle, + // cropStyle: CropStyle.circle, aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1), compressQuality: 100, maxHeight: 700, maxWidth: 700, - androidUiSettings: const AndroidUiSettings( - toolbarColor: Colors.black, - toolbarWidgetColor: white, - hideBottomControls: true, - ), - ); + // androidUiSettings: const AndroidUiSettings( + // toolbarColor: Colors.black, + // toolbarWidgetColor: white, + // hideBottomControls: true, + // ), + )) as File?; return cropped; } catch (e) { print(e.toString()); diff --git a/lib/widgets/elevated_button_container.dart b/lib/widgets/elevated_button_container.dart index 2db420f..e8b7f79 100644 --- a/lib/widgets/elevated_button_container.dart +++ b/lib/widgets/elevated_button_container.dart @@ -35,8 +35,8 @@ class ElevatedButtonContainer extends StatelessWidget { )), onPressed: buttonFunction, style: ElevatedButton.styleFrom( - primary: buttonColor, - onPrimary: Colors.grey, + // primary: buttonColor, + // onPrimary: Colors.grey, shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(borderRadius))), diff --git a/lib/widgets/forgot_my_password.dart b/lib/widgets/forgot_my_password.dart index 217a183..4b3a2c5 100644 --- a/lib/widgets/forgot_my_password.dart +++ b/lib/widgets/forgot_my_password.dart @@ -1,85 +1,85 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:zenith_monitor/constants/colors_constants.dart'; -import 'package:zenith_monitor/modules/forget_password/bloc/forgot_pwd_bloc.dart'; -import 'package:zenith_monitor/widgets/status_message.dart'; -import 'package:zenith_monitor/widgets/forgot_my_password_email_buttons_section.dart'; -import 'package:zenith_monitor/widgets/forgot_my_password_title_section.dart'; +// import 'package:flutter/material.dart'; +// import 'package:flutter_bloc/flutter_bloc.dart'; +// import 'package:zenith_monitor/constants/colors_constants.dart'; +// import 'package:zenith_monitor/modules/forget_password/bloc/forgot_pwd_bloc.dart'; +// import 'package:zenith_monitor/widgets/status_message.dart'; +// import 'package:zenith_monitor/widgets/forgot_my_password_email_buttons_section.dart'; +// import 'package:zenith_monitor/widgets/forgot_my_password_title_section.dart'; -class ForgotMyPasswordBody extends StatefulWidget { - final double screenWidth; - final double screenHeight; - final Orientation deviceOrientation; - final String? statusMessage; - final Color? messageColor; +// class ForgotMyPasswordBody extends StatefulWidget { +// final double screenWidth; +// final double screenHeight; +// final Orientation deviceOrientation; +// final String? statusMessage; +// final Color? messageColor; - const ForgotMyPasswordBody( - {required this.screenWidth, - required this.screenHeight, - required this.deviceOrientation, - required this.statusMessage, - required this.messageColor}); +// const ForgotMyPasswordBody( +// {required this.screenWidth, +// required this.screenHeight, +// required this.deviceOrientation, +// required this.statusMessage, +// required this.messageColor}); - @override - _FMyPWDBodyState createState() => _FMyPWDBodyState(); -} +// @override +// _FMyPWDBodyState createState() => _FMyPWDBodyState(); +// } -class _FMyPWDBodyState extends State { - late TextEditingController emailController; - @override - void initState() { - super.initState(); +// class _FMyPWDBodyState extends State { +// late TextEditingController emailController; +// @override +// void initState() { +// super.initState(); - emailController = TextEditingController(); - } +// emailController = TextEditingController(); +// } - @override - void dispose() { - super.dispose(); +// @override +// void dispose() { +// super.dispose(); - emailController.dispose(); - } +// emailController.dispose(); +// } - @override - Widget build(BuildContext context) { - return SingleChildScrollView( - child: Column(mainAxisAlignment: MainAxisAlignment.start, children: [ - TitleSection( - screenWidth: widget.screenWidth, - screenHeight: widget.screenHeight, - deviceOrientation: widget.deviceOrientation), - Container( - height: 0.50 * widget.screenHeight, - margin: EdgeInsets.only(top: 0.27 * widget.screenHeight), - decoration: BoxDecoration( - gradient: const LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - raisingBlack, - black, - ]), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(_boderRadius()), - topRight: Radius.circular(_boderRadius()))), - child: EmailButtonsSection( - screenWidth: widget.screenWidth, - screenHeight: widget.screenHeight, - deviceOrientation: widget.deviceOrientation, - emailController: emailController, - funcSubmit: () => BlocProvider.of(context) - .add(PwdResetEmail(email: emailController.text.trim())), - statusMessage: StatusMessage( - message: widget.statusMessage, - color: widget.messageColor, - ), - ), - alignment: Alignment.center) - ])); - } +// @override +// Widget build(BuildContext context) { +// return SingleChildScrollView( +// child: Column(mainAxisAlignment: MainAxisAlignment.start, children: [ +// TitleSection( +// screenWidth: widget.screenWidth, +// screenHeight: widget.screenHeight, +// deviceOrientation: widget.deviceOrientation), +// Container( +// height: 0.50 * widget.screenHeight, +// margin: EdgeInsets.only(top: 0.27 * widget.screenHeight), +// decoration: BoxDecoration( +// gradient: const LinearGradient( +// begin: Alignment.topCenter, +// end: Alignment.bottomCenter, +// colors: [ +// raisingBlack, +// black, +// ]), +// borderRadius: BorderRadius.only( +// topLeft: Radius.circular(_boderRadius()), +// topRight: Radius.circular(_boderRadius()))), +// child: EmailButtonsSection( +// screenWidth: widget.screenWidth, +// screenHeight: widget.screenHeight, +// deviceOrientation: widget.deviceOrientation, +// emailController: emailController, +// funcSubmit: () => BlocProvider.of(context) +// .add(PwdResetEmail(email: emailController.text.trim())), +// statusMessage: StatusMessage( +// message: widget.statusMessage, +// color: widget.messageColor, +// ), +// ), +// alignment: Alignment.center) +// ])); +// } - double _boderRadius() { - return widget.screenWidth * - ((widget.deviceOrientation == Orientation.portrait) ? 0.14 : 0.07); - } -} +// double _boderRadius() { +// return widget.screenWidth * +// ((widget.deviceOrientation == Orientation.portrait) ? 0.14 : 0.07); +// } +// } diff --git a/lib/widgets/login.dart b/lib/widgets/login.dart index bd7c3bc..fc97289 100644 --- a/lib/widgets/login.dart +++ b/lib/widgets/login.dart @@ -10,16 +10,14 @@ class LoginWidget extends StatefulWidget { const LoginWidget(); @override - _LoginWidgetState createState() => _LoginWidgetState(); + LoginWidgetState createState() => LoginWidgetState(); } -class _LoginWidgetState extends State { - TextEditingController emailController = TextEditingController(); - TextEditingController passwordController = TextEditingController(); +class LoginWidgetState extends State { + // final ButtonStyle style = + // ElevatedButton.styleFrom(textStyle: const TextStyle(fontSize: 20)); - late rive.RiveAnimationController _githubLoginController; - late rive.RiveAnimationController _facebookLoginController; - late rive.RiveAnimationController _googleLoginController; + // late rive.RiveAnimationController _googleLoginController; void _toggleAnimation(rive.RiveAnimationController controller) { if (controller.isActive == false) { @@ -30,19 +28,10 @@ class _LoginWidgetState extends State { @override void initState() { super.initState(); - _githubLoginController = rive.OneShotAnimation( - 'changeColors', - autoplay: false, - ); - - _facebookLoginController = rive.OneShotAnimation( - 'changeColors', - autoplay: false, - ); - _googleLoginController = rive.OneShotAnimation( - 'changeColors', - autoplay: false, - ); + // _googleLoginController = rive.OneShotAnimation( + // 'changeColors', + // autoplay: false, + // ); } @override @@ -80,10 +69,12 @@ class _LoginWidgetState extends State { BoxConstraints(maxHeight: MediaQuery.of(context).size.height), child: Container( decoration: const BoxDecoration( - color: eerieBlack, - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(40.0), - bottomRight: Radius.circular(40.0))), + color: eerieBlack, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(40.0), + bottomRight: Radius.circular(40.0), + ), + ), width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height * ((MediaQuery.of(context).orientation == Orientation.portrait) @@ -99,10 +90,8 @@ class _LoginWidgetState extends State { child: const rive.RiveAnimation.asset( "assets/animations/zenithlogo.riv"), ), - emailPasswordForgotPasswordColumn(), StatusMessage(message: errorMsg, color: lightCoral), - singUpLoginRow(), - otherMethodsOfLoginRow() + loginWithGoogleButton(), ], ), ), @@ -110,132 +99,27 @@ class _LoginWidgetState extends State { ); } - Row otherMethodsOfLoginRow() { - return Row(mainAxisAlignment: MainAxisAlignment.center, children: [ - otherMethodsOfLoginButton("github", _githubLoginController, - null), // github auth service doesn't exist yet, later github auth event must be passed as a parameter - otherMethodsOfLoginButton( - "facebook", _facebookLoginController, FacebookLoginEvent()), - otherMethodsOfLoginButton( - "google", _googleLoginController, GoogleLoginEvent()) - ]); - } - - Row singUpLoginRow() { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [singInLoginButton("Sign Up"), singInLoginButton("Login")], - ); - } - - Column emailPasswordForgotPasswordColumn() { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - textField("Email", emailController, false), - const Divider(), - textField("Senha", passwordController, true), - forgotPasswordButton(), - ], - ); - } - - ElevatedButton otherMethodsOfLoginButton(String animationPathForType, - rive.RiveAnimationController _controller, AuthenticationEvent? event) { - String animationPath = - "assets/animations/" + animationPathForType + "_icon.riv"; - - return ElevatedButton( - onPressed: () => { - if (event != null) - { - _toggleAnimation(_controller), - BlocProvider.of(context).add(event), - } - }, - child: Container( - width: 40, - height: 40, - child: rive.RiveAnimation.asset( - animationPath, - controllers: [_controller], - )), - style: ButtonStyle( - shape: MaterialStateProperty.all(const CircleBorder()), - backgroundColor: MaterialStateProperty.all(white.withOpacity(0.001))), - ); - } - - Container singInLoginButton(String buttonText) { - return Container( - decoration: BoxDecoration( - color: lightBrown, borderRadius: BorderRadius.circular(30)), - width: MediaQuery.of(context).size.width * 0.35, - child: TextButton( - onPressed: () { - if (buttonText == "Login") { - BlocProvider.of(context).add(EmailLoginEvent( - email: emailController.text.trim(), - password: passwordController.text)); - passwordController.clear(); - } else { - Navigator.pushNamed(context, '/signup'); - } - }, - child: Text(buttonText, - style: const TextStyle( - color: white, fontFamily: 'DMSans', fontSize: 18))), - ); - } - - Align forgotPasswordButton() { - return Align( - alignment: const Alignment(0.7, 0), - child: TextButton( - onPressed: () { - Navigator.pushNamed(context, '/forgotPwd'); - }, - child: const Text( - "Esqueci a Senha", - textAlign: TextAlign.right, - style: TextStyle(color: white), - )), - ); - } - - Container textField( - String hintText, TextEditingController controller, bool hideText) { - return Container( - width: MediaQuery.of(context).size.width * 0.8, - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.centerRight, - end: Alignment.centerLeft, - colors: [ - Color(0xff404245), - Color(0xff212325), - ]), - borderRadius: BorderRadius.all(Radius.circular(10)), - ), - child: TextField( - controller: controller, - cursorColor: white, - obscureText: hideText, - style: const TextStyle( - color: white, - fontWeight: FontWeight.normal, - fontFamily: 'DMSans', - fontSize: 20.0), - decoration: InputDecoration( - isDense: true, - hintStyle: const TextStyle(color: white), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: raisingBlack), - borderRadius: BorderRadius.all(Radius.circular(10))), - enabledBorder: const OutlineInputBorder( - borderSide: BorderSide(color: raisingBlack), - borderRadius: BorderRadius.all(Radius.circular(10))), - hintText: hintText), + Center loginWithGoogleButton() { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ElevatedButton( + // style: const TextStyle(fontSize: 20)), + onPressed: () { + // _toggleAnimation(_googleLoginController); + BlocProvider.of(context).add(GoogleLoginEvent()); + }, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Image.asset('assets/images/devicon_google.png', height: 20), + const SizedBox(width: 10), + const Text('Entrar com o Google'), + ], + ), + ), + ], ), ); } diff --git a/lib/widgets/mission_creation.dart b/lib/widgets/mission_creation.dart index a2a54d5..5dae140 100644 --- a/lib/widgets/mission_creation.dart +++ b/lib/widgets/mission_creation.dart @@ -182,13 +182,13 @@ class _MissionCreationState extends State { height: 30, child: ElevatedButton( style: ButtonStyle( - backgroundColor: MaterialStateProperty.resolveWith( - (Set states) { - if (states.contains(MaterialState.pressed)) return Colors.green; + backgroundColor: WidgetStateProperty.resolveWith( + (Set states) { + if (states.contains(WidgetState.pressed)) return Colors.green; return mantisGreen; }, ), - shape: MaterialStateProperty.all( + shape: WidgetStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ))), diff --git a/lib/widgets/not_found_screen.dart b/lib/widgets/not_found_screen.dart index 1c007f1..c20da71 100644 --- a/lib/widgets/not_found_screen.dart +++ b/lib/widgets/not_found_screen.dart @@ -5,12 +5,12 @@ import 'package:zenith_monitor/widgets/standard_app_bar.dart'; class NotFoundScreen extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( + return const Scaffold( backgroundColor: eerieBlack, - appBar: const StandardAppBar(title: "404"), + appBar: StandardAppBar(title: "404"), body: Column( mainAxisAlignment: MainAxisAlignment.spaceAround, - children: const [ + children: [ Align( alignment: Alignment.topLeft, child: Padding( diff --git a/lib/widgets/terminal.dart b/lib/widgets/terminal.dart index 6546ec1..7e31f2c 100644 --- a/lib/widgets/terminal.dart +++ b/lib/widgets/terminal.dart @@ -20,9 +20,7 @@ class Terminal extends StatelessWidget { @override Widget build(BuildContext context) { - if (WidgetsBinding.instance != null) { - WidgetsBinding.instance!.addPostFrameCallback((_) => _scrollToEnd()); - } + WidgetsBinding.instance.addPostFrameCallback((_) => _scrollToEnd()); return Scaffold( body: SafeArea( child: CustomScrollView( diff --git a/pubspec.lock b/pubspec.lock index c44583c..9afc3d1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,230 +1,278 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d + url: "https://pub.dev" + source: hosted + version: "1.3.39" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.5.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" bloc: dependency: "direct main" description: name: bloc - url: "https://pub.dartlang.org" + sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e" + url: "https://pub.dev" source: hosted - version: "7.2.1" + version: "8.1.4" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" cloud_firestore: dependency: "direct main" description: name: cloud_firestore - url: "https://pub.dartlang.org" + sha256: "240c1c3598e62ad58ee665b6df9c65172d2fbe4742770c21ed060e013cb8e037" + url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "5.1.0" cloud_firestore_platform_interface: - dependency: transitive + dependency: "direct main" description: name: cloud_firestore_platform_interface - url: "https://pub.dartlang.org" + sha256: "5b5a9c2b5a85bf995f12e7447c4197d7ad659533d642d3d904ccbb509f83d62a" + url: "https://pub.dev" source: hosted - version: "5.5.7" + version: "6.2.9" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web - url: "https://pub.dartlang.org" + sha256: "898e9f65548df65ca7b2cff9f32cf233424ceccff1d870b8819ea2b8050d5b39" + url: "https://pub.dev" source: hosted - version: "2.6.16" + version: "4.0.3" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: name: connectivity_plus - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.5" - connectivity_plus_linux: - dependency: transitive - description: - name: connectivity_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - connectivity_plus_macos: - dependency: transitive - description: - name: connectivity_plus_macos - url: "https://pub.dartlang.org" + sha256: db7a4e143dc72cc3cb2044ef9b052a7ebfe729513e6a82943bc3526f784365b8 + url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "6.0.3" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - connectivity_plus_web: - dependency: transitive - description: - name: connectivity_plus_web - url: "https://pub.dartlang.org" + sha256: b6a56efe1e6675be240de39107281d4034b64ac23438026355b4234042a35adb + url: "https://pub.dev" source: hosted - version: "1.2.2" - connectivity_plus_windows: + version: "2.0.0" + cross_file: dependency: transitive description: - name: connectivity_plus_windows - url: "https://pub.dartlang.org" + name: cross_file + sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + url: "https://pub.dev" source: hosted - version: "1.2.2" - cross_file: + version: "0.3.4+1" + csslib: dependency: transitive description: - name: cross_file - url: "https://pub.dartlang.org" + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" source: hosted - version: "0.3.3+1" + version: "1.0.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.8" dbus: dependency: transitive description: name: dbus - url: "https://pub.dartlang.org" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.dev" + source: hosted + version: "0.7.10" + equatable: + dependency: "direct main" + description: + name: equatable + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "2.0.5" + facebook_auth_desktop: + dependency: transitive + description: + name: facebook_auth_desktop + sha256: "0e4f147a57de8fdb8eaaee4836e6b9859482921143af0c350ffbf2a9bbd531a0" + url: "https://pub.dev" + source: hosted + version: "2.0.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + url: "https://pub.dev" source: hosted - version: "1.2.1" - file: + version: "2.1.2" + file_selector_linux: dependency: transitive description: - name: file - url: "https://pub.dartlang.org" + name: file_selector_linux + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "0.9.2+1" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 + url: "https://pub.dev" + source: hosted + version: "0.9.4" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 + url: "https://pub.dev" + source: hosted + version: "0.9.3+1" firebase_auth: dependency: "direct main" description: name: firebase_auth - url: "https://pub.dartlang.org" + sha256: a41b56878fa6aef3ea52962329b47eee333672d4b0ecc406e071b9fc729f242c + url: "https://pub.dev" source: hosted - version: "3.3.19" + version: "5.1.2" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - url: "https://pub.dartlang.org" + sha256: d1c68097588f3b75ef79a22102ff96c311735c254353bccf6824d19f1a7e86b9 + url: "https://pub.dev" source: hosted - version: "6.2.7" + version: "7.4.2" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - url: "https://pub.dartlang.org" + sha256: e66ec0ae5697ee39ccd4865d6887cb0df220dd4ea0b21404910c68ca4c1a731a + url: "https://pub.dev" source: hosted - version: "3.3.16" + version: "5.12.4" firebase_core: dependency: "direct main" description: name: firebase_core - url: "https://pub.dartlang.org" + sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" + url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "3.2.0" firebase_core_platform_interface: - dependency: transitive + dependency: "direct overridden" description: name: firebase_core_platform_interface - url: "https://pub.dartlang.org" + sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" + url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "5.1.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - url: "https://pub.dartlang.org" + sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" + url: "https://pub.dev" source: hosted - version: "1.6.4" + version: "2.17.3" firebase_storage: dependency: "direct main" description: name: firebase_storage - url: "https://pub.dartlang.org" + sha256: "472e8532dfdcffd00ed8cc1ff57fda76af6f0a8a26547908bc20f25079922408" + url: "https://pub.dev" source: hosted - version: "10.2.17" + version: "12.1.1" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - url: "https://pub.dartlang.org" + sha256: f07b5dbf0efcaab0f7d38910851791f7509b8864d491bb11c079f67339f31b27 + url: "https://pub.dev" source: hosted - version: "4.1.7" + version: "5.1.26" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - url: "https://pub.dartlang.org" + sha256: ef9d27afcd68a1c2b90d0cad2b02cf6333a053655988f4a2f6cba2796134cae5 + url: "https://pub.dev" source: hosted - version: "3.2.16" + version: "3.9.11" flutter: dependency: "direct main" description: flutter @@ -234,58 +282,114 @@ packages: dependency: "direct main" description: name: flutter_bloc - url: "https://pub.dartlang.org" + sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a + url: "https://pub.dev" source: hosted - version: "7.3.3" + version: "8.1.6" flutter_dotenv: dependency: "direct main" description: name: flutter_dotenv - url: "https://pub.dartlang.org" + sha256: "9357883bdd153ab78cbf9ffa07656e336b8bbb2b5a3ca596b0b27e119f7c7d77" + url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "5.1.0" flutter_facebook_auth: dependency: "direct main" description: name: flutter_facebook_auth - url: "https://pub.dartlang.org" + sha256: "48aab06f3b1d3494a33b0c10c11ecbc226fdcf0bf37b478e91d9de57cce840f5" + url: "https://pub.dev" source: hosted - version: "3.5.7" + version: "7.0.1" flutter_facebook_auth_platform_interface: dependency: transitive description: name: flutter_facebook_auth_platform_interface - url: "https://pub.dartlang.org" + sha256: dc9d621dd45c4f0b341173a16e94f4b77155fa9c0f4326743f1251f2f445ba38 + url: "https://pub.dev" source: hosted - version: "2.7.1" + version: "6.0.0" flutter_facebook_auth_web: dependency: transitive description: name: flutter_facebook_auth_web - url: "https://pub.dartlang.org" + sha256: "947d93fc5a7cc5db1ce0274505254bb3b619cdd98176954f125f742964696804" + url: "https://pub.dev" source: hosted - version: "2.6.0+2" + version: "6.0.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "4.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - url: "https://pub.dartlang.org" + sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e + url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.0.20" flutter_polyline_points: dependency: "direct main" description: name: flutter_polyline_points - url: "https://pub.dartlang.org" + sha256: "3a1c8c30abee9fb0fbe44c70d5d1cedb10ef28ec7ea285c669f02b3e183483aa" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "2.1.0" + flutter_secure_storage: + dependency: transitive + description: + name: flutter_secure_storage + sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0" + url: "https://pub.dev" + source: hosted + version: "9.2.2" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" flutter_test: dependency: "direct dev" description: flutter @@ -296,321 +400,462 @@ packages: description: flutter source: sdk version: "0.0.0" - geoflutterfire: - dependency: "direct main" - description: - name: geoflutterfire - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" get: dependency: "direct main" description: name: get - url: "https://pub.dartlang.org" + sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e + url: "https://pub.dev" + source: hosted + version: "4.6.6" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + url: "https://pub.dev" source: hosted - version: "4.6.5" + version: "0.3.1+1" + google_maps: + dependency: transitive + description: + name: google_maps + sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a" + url: "https://pub.dev" + source: hosted + version: "7.1.0" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter - url: "https://pub.dartlang.org" + sha256: acf0ec482d86b2ac55ade80597ce7f797a47971f5210ebfd030f0d58130e0a94 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + sha256: f6306d83edddba7aa017ca6f547d6f36a1443f90ed49d91d48ef70d7aa86e2e1 + url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.12.0" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + sha256: a6e3c6ecdda6c985053f944be13a0645ebb919da2ef0f5bc579c5e1670a5b2a8 + url: "https://pub.dev" + source: hosted + version: "2.10.0" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - url: "https://pub.dartlang.org" + sha256: bd60ca330e3c7763b95b477054adec338a522d982af73ecc520b232474063ac5 + url: "https://pub.dev" + source: hosted + version: "2.8.0" + google_maps_flutter_web: + dependency: transitive + description: + name: google_maps_flutter_web + sha256: f3155c12119d8a5c2732fdf39ceb5cc095bc662059a03b4ea23294ecebe1d199 + url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "0.5.8" google_sign_in: dependency: "direct main" description: name: google_sign_in - url: "https://pub.dartlang.org" + sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" + url: "https://pub.dev" source: hosted - version: "5.3.2" + version: "6.2.1" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - url: "https://pub.dartlang.org" + sha256: d30fb34b659679ea74397e9748b4ab5d720720d57dcc79538f1b3c4a68654cb3 + url: "https://pub.dev" source: hosted - version: "5.2.8" + version: "6.1.27" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - url: "https://pub.dartlang.org" + sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + url: "https://pub.dev" source: hosted - version: "5.3.1" + version: "5.7.6" google_sign_in_platform_interface: dependency: transitive description: name: google_sign_in_platform_interface - url: "https://pub.dartlang.org" + sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971" + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.4.5" google_sign_in_web: dependency: transitive description: name: google_sign_in_web - url: "https://pub.dartlang.org" + sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 + url: "https://pub.dev" source: hosted - version: "0.10.1+2" + version: "0.12.4+1" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.1" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" + source: hosted + version: "0.15.4" http: dependency: "direct main" description: name: http - url: "https://pub.dartlang.org" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" source: hosted - version: "0.13.4" + version: "1.2.2" http_parser: dependency: "direct main" description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" image_cropper: dependency: "direct main" description: name: image_cropper - url: "https://pub.dartlang.org" + sha256: d31be025c744ac1bf52d1f49cfdd92fd421e7e45ddadaaac0b39901f67c2a7e3 + url: "https://pub.dev" + source: hosted + version: "7.1.0" + image_cropper_for_web: + dependency: transitive + description: + name: image_cropper_for_web + sha256: "6386e64908ce5d5df404e01c750a99b633dfcea88da69b3efcd3b3811d639760" + url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "5.1.0" + image_cropper_platform_interface: + dependency: transitive + description: + name: image_cropper_platform_interface + sha256: "39c6539571bda7ce666e0a2f450246a5d42187406eef8f486a3d64f1d9381637" + url: "https://pub.dev" + source: hosted + version: "6.1.0" image_picker: dependency: "direct main" description: name: image_picker - url: "https://pub.dartlang.org" + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + url: "https://pub.dev" source: hosted - version: "0.8.5+3" + version: "1.1.2" image_picker_android: dependency: transitive description: name: image_picker_android - url: "https://pub.dartlang.org" + sha256: ff39a10ab4f48f4ac70776d0494a97bf073cd2570892cd46bc8a5cac162c25db + url: "https://pub.dev" source: hosted - version: "0.8.4+13" + version: "0.8.12+4" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - url: "https://pub.dartlang.org" + sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" + url: "https://pub.dev" source: hosted - version: "2.1.8" + version: "3.0.4" image_picker_ios: dependency: transitive description: name: image_picker_ios - url: "https://pub.dartlang.org" + sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" + url: "https://pub.dev" source: hosted - version: "0.8.5+5" + version: "0.8.12" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - url: "https://pub.dartlang.org" + sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" + url: "https://pub.dev" source: hosted - version: "2.5.0" - intl: + version: "2.10.0" + image_picker_windows: dependency: transitive description: - name: intl - url: "https://pub.dartlang.org" + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.2.1+1" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + js_wrapping: + dependency: transitive + description: + name: js_wrapping + sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c + url: "https://pub.dev" + source: hosted + version: "0.7.4" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "3.0.1" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "4.0.0" location: dependency: "direct main" description: name: location - url: "https://pub.dartlang.org" + sha256: "6463a242973bf247e3fb1c7722919521b98026978ee3b5177202e103a39c145e" + url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "7.0.0" location_platform_interface: dependency: transitive description: name: location_platform_interface - url: "https://pub.dartlang.org" + sha256: "1e535ccc8b4a9612de4e4319871136b45d2b5d1fb0c2a8bf99687242bf7ca5f7" + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "5.0.0" location_web: dependency: transitive description: name: location_web - url: "https://pub.dartlang.org" + sha256: "613597b489beb396f658c6f4358dd383c5ed0a1402d95e287642a5f2d8171cb0" + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "5.0.3" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.8.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + mime: + dependency: transitive + description: + name: mime + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.0.5" nested: dependency: transitive description: name: nested - url: "https://pub.dartlang.org" + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" source: hosted version: "1.0.0" nm: dependency: transitive description: name: nm - url: "https://pub.dartlang.org" + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" source: hosted version: "0.5.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.0" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + url: "https://pub.dev" source: hosted - version: "2.0.10" + version: "2.1.3" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" + url: "https://pub.dev" source: hosted - version: "2.0.14" - path_provider_ios: + version: "2.2.7" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.4.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.3.0" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "6.0.2" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "2.1.8" provider: dependency: transitive description: name: provider - url: "https://pub.dartlang.org" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + url: "https://pub.dev" source: hosted - version: "6.0.3" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" + version: "6.1.2" rive: dependency: "direct main" description: name: rive - url: "https://pub.dartlang.org" + sha256: "3c0047e636ebe8e4044087e239dffdd026cf839fe9aecf55d53431b255668bcf" + url: "https://pub.dev" source: hosted - version: "0.7.33" - rxdart: + version: "0.13.9" + rive_common: dependency: transitive description: - name: rxdart - url: "https://pub.dartlang.org" + name: rive_common + sha256: "3fe76ba4680787741688ee393e47b63417e8643816795e4eac01021683af1d84" + url: "https://pub.dev" source: hosted - version: "0.27.4" + version: "0.4.9" + sanitize_html: + dependency: transitive + description: + name: sanitize_html + sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" + url: "https://pub.dev" + source: hosted + version: "2.1.0" sky_engine: dependency: transitive description: flutter @@ -620,93 +865,122 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" stream_transform: dependency: transitive description: name: stream_transform - url: "https://pub.dartlang.org" + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" source: hosted - version: "0.4.8" + version: "0.7.0" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.2" usb_serial: dependency: "direct main" description: name: usb_serial - url: "https://pub.dartlang.org" + sha256: a605a600e34e7f28d4e80851ca3999ef747e42e406138887b8a88b8c382a8b07 + url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.5.2" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "5.5.1" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" source: hosted - version: "0.2.0+1" + version: "1.0.4" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" source: hosted - version: "5.3.1" + version: "6.5.0" sdks: - dart: ">=2.16.0 <3.0.0" - flutter: ">=2.8.1" + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0fe36f4..a3df3b0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,30 +29,34 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - http: ^0.13.3 - flutter_polyline_points: ^1.0.0 - bloc: ^7.2.1 - flutter_bloc: ^7.3.1 + http: ^1.2.1 + flutter_polyline_points: ^2.1.0 + bloc: ^8.1.4 + flutter_bloc: ^8.1.6 path_provider: ^2.0.3 - http_parser: ^4.0.0 - google_sign_in: ^5.1.0 - firebase_auth: ^3.0.2 - firebase_core: ^1.7.0 - cloud_firestore: ^2.5.3 - geoflutterfire: ^3.0.0-nullsafety.2 - google_maps_flutter: ^2.0.10 - location: ^4.3.0 - flutter_facebook_auth: ^3.5.2 - rive: ^0.7.33 - image_picker: ^0.8.4+10 - image_cropper: ^1.5.0 - firebase_storage: ^10.2.9 - usb_serial: ^0.3.0 - connectivity_plus: ^2.3.5 + http_parser: ^4.0.2 + google_sign_in: ^6.2.1 + firebase_auth: ^5.1.2 + firebase_core: ^3.2.0 + cloud_firestore: ^5.1.0 + google_maps_flutter: ^2.2.5 + location: ^7.0.0 + flutter_facebook_auth: ^7.0.1 + rive: ^0.13.9 + image_picker: ^1.1.2 + image_cropper: ^7.1.0 + firebase_storage: ^12.1.1 + usb_serial: ^0.5.2 + connectivity_plus: ^6.0.3 flutter_dotenv: ^5.0.2 + cloud_firestore_platform_interface: ^6.2.9 + equatable: ^2.0.5 + +dependency_overrides: + firebase_core_platform_interface: 5.1.0 dev_dependencies: - flutter_lints: ^1.0.4 + flutter_lints: ^4.0.0 flutter_test: sdk: flutter