diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml new file mode 100644 index 0000000..7fad732 --- /dev/null +++ b/.github/workflows/android-release.yml @@ -0,0 +1,106 @@ +name: Android App Release for development branch + +on: + push: + branches: + - development + +jobs: + version: + name: Create version number # using GitVersion + runs-on: ubuntu-latest #macos-latest + steps: + - uses: actions/checkout@v3 + - name: Fetch all history for all tags and branches + run: git fetch --prune --depth=10000 + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v0.9.15 + with: + versionSpec: '5.x' + - name: Use GitVersion + id: gitversion + uses: gittools/actions/gitversion/execute@v0.9.15 + - name: Create android-version.txt with nuGetVersion + run: echo ${{ steps.gitversion.outputs.nuGetVersion }} > android-version.txt + - name: Upload android-version.txt + uses: actions/upload-artifact@v3 + with: + name: gitversion + path: android-version.txt + build: + name: Build Appbundle and Apks + needs: [ version ] + runs-on: ubuntu-latest #macos-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: '12.x' + distribution: 'zulu' + cache: 'gradle' + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.3.7' + cache: true + channel: 'stable' + - run: flutter upgrade + - run: flutter --version + - name: Get DEV_GOOGLE_SERVICES_JSON content write it into app/src/development/google-services.json + env: + DEV_GOOGLE_SERVICES_JSON: ${{ secrets.DEV_GOOGLE_SERVICES_JSON }} + run: echo "$DEV_GOOGLE_SERVICES_JSON" > android/app/src/development/google-services.json + - run: flutter pub get + # - run: flutter test + - run: flutter build apk --profile --flavor development --target lib/main_development.dart + # - run: flutter build appbundle + - name: upload app builds files + uses: actions/upload-artifact@v3 + with: + name: flutter-app-builds + path: | + build/app/outputs/flutter-apk/app-development-profile.apk + github-deploy: + name: Deploy Build to Github + needs: [ build, version ] + runs-on: ubuntu-latest #macos-latest + steps: + - name: Get android-version.txt + uses: actions/download-artifact@v3 + with: + name: gitversion + - name: Read version + id: version + uses: juliangruber/read-file-action@v1 + with: + path: android-version.txt + - name: Get app builds + uses: actions/download-artifact@v3 + with: + name: flutter-app-builds + - name: Echo android-version.txt + run: echo "${{ steps.version.outputs.content }}" + - name: Display structure of downloaded files + run: ls -R + - name: Create a Release in GitHub + uses: ncipollo/release-action@v1 + with: + artifacts: "flutter-apk/app-development-profile.apk" + token: ${{ secrets.GH_TOKEN }} + tag: ${{ steps.version.outputs.content }} + commit: ${{ github.sha }} + firebase-deploy: + name: Deploy Build to Firebase App Distribution + needs: [ build ] + runs-on: ubuntu-latest #macos-latest + steps: + - name: Get app builds + uses: actions/download-artifact@v3 + with: + name: flutter-app-builds + - name: upload artifact to Firebase App Distribution + uses: wzieba/Firebase-Distribution-Github-Action@v1 + with: + appId: ${{secrets.FIREBASE_ANDROID_APP_ID}} + serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }} + groups: testers + file: flutter-apk/app-development-profile.apk \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 0a1af40..916d8cc 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.6.10'//1.8.10 -> 1.8.10 because of release build failures repositories { google() mavenCentral() diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 702ab0c..41bc4d3 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -13,55 +13,49 @@ import 'package:firebase_auth/firebase_auth.dart' as _i7; import 'package:firebase_core/firebase_core.dart' as _i6; import 'package:flutter_facebook_auth/flutter_facebook_auth.dart' as _i5; import 'package:fpb/authentication_mock_without_backend/application/bloc/authentication_bloc.dart' - as _i19; + as _i17; import 'package:fpb/authentication_mock_without_backend/infrastructure/authentication_mock_module_injection.dart' - as _i33; + as _i30; import 'package:fpb/authentication_with_facebook/application/facebook_auth_bloc.dart' - as _i21; + as _i19; import 'package:fpb/authentication_with_facebook/domain/i_facebook_repository_facade.dart' as _i10; import 'package:fpb/authentication_with_facebook/infrastructure/facebook_auth_repository.dart' as _i11; import 'package:fpb/authentication_with_facebook/infrastructure/facebook_authentication_injectable_module.dart' - as _i35; + as _i32; import 'package:fpb/authentication_with_firebase/application/bloc/auth_bloc.dart' - as _i27; -import 'package:fpb/authentication_with_firebase/domain/i_auth_facade.dart' as _i24; +import 'package:fpb/authentication_with_firebase/domain/i_auth_facade.dart' + as _i21; import 'package:fpb/authentication_with_firebase/infrastructure/firebase_auth_facade_impl.dart' - as _i25; + as _i22; import 'package:fpb/authentication_with_firebase/infrastructure/firebase_auth_injectable_module.dart' - as _i34; + as _i31; import 'package:fpb/authentication_with_google/application/google_auth_bloc/google_sign_in_bloc.dart' - as _i23; + as _i20; import 'package:fpb/authentication_with_google/domain/i_google_repository_facade.dart' - as _i14; + as _i12; import 'package:fpb/authentication_with_google/infrastructure/google_authentication_injectable_module.dart' - as _i31; + as _i28; import 'package:fpb/authentication_with_google/infrastructure/google_authentication_repository.dart' - as _i15; + as _i13; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart' - as _i28; + as _i25; import 'package:fpb/core/application/internet_and_time_bloc/internet_and_time_bloc.dart' - as _i30; -import 'package:fpb/core/infrastructure/core_injectable_module.dart' as _i32; -import 'package:fpb/core/settings/app_settings_helper.dart' as _i26; -import 'package:fpb/core/settings/cached.dart' as _i20; -import 'package:fpb/forgot_password_flow/application/bloc/forgot_password_bloc.dart' - as _i22; -import 'package:fpb/forgot_password_flow/domain/i_forgot_password_facade.dart' - as _i12; -import 'package:fpb/forgot_password_flow/infrastructure/forgot_password_repository.dart' - as _i13; + as _i27; +import 'package:fpb/core/infrastructure/core_injectable_module.dart' as _i29; +import 'package:fpb/core/settings/app_settings_helper.dart' as _i23; +import 'package:fpb/core/settings/cached.dart' as _i18; import 'package:fpb/home/application/home_view_bloc/home_view_bloc.dart' - as _i29; + as _i26; import 'package:get_it/get_it.dart' as _i1; import 'package:google_sign_in/google_sign_in.dart' as _i9; import 'package:injectable/injectable.dart' as _i2; -import 'package:ntp/ntp.dart' as _i16; -import 'package:shared_preferences/shared_preferences.dart' as _i17; +import 'package:ntp/ntp.dart' as _i14; +import 'package:shared_preferences/shared_preferences.dart' as _i15; import 'package:user_repository/user_repository.dart' - as _i18; // ignore_for_file: unnecessary_lambdas + as _i16; // ignore_for_file: unnecessary_lambdas // ignore_for_file: lines_longer_than_80_chars extension GetItInjectableX on _i1.GetIt { @@ -104,66 +98,56 @@ extension GetItInjectableX on _i1.GetIt { gh<_i5.FacebookAuth>(), gh<_i7.FirebaseAuth>(), )); - gh.lazySingleton<_i12.IForgotPasswordRepositoryFacade>( - () => _i13.ForgotPasswordRepository( - gh<_i7.FirebaseAuth>(), - gh(), - )); - gh.lazySingleton<_i14.IGoogleRepositoryFacade>( - () => _i15.GoogleAuthenticationRepository( + gh.lazySingleton<_i12.IGoogleRepositoryFacade>( + () => _i13.GoogleAuthenticationRepository( gh<_i9.GoogleSignIn>(), gh<_i7.FirebaseAuth>(), )); - gh.lazySingleton<_i16.NTP>(() => coreInjectableModule.ntp); - await gh.factoryAsync<_i17.SharedPreferences>( + gh.lazySingleton<_i14.NTP>(() => coreInjectableModule.ntp); + await gh.factoryAsync<_i15.SharedPreferences>( () => firebaseAuthInjectableModule.sharePreferences, preResolve: true, ); - gh.singleton<_i18.UserRepository>( + gh.singleton<_i16.UserRepository>( authenticationMockModuleInjection.userRepository); - gh.factory<_i19.AuthenticationBloc>(() => _i19.AuthenticationBloc( + gh.factory<_i17.AuthenticationBloc>(() => _i17.AuthenticationBloc( authenticationRepository: gh<_i3.AuthenticationRepository>(), - userRepository: gh<_i18.UserRepository>(), + userRepository: gh<_i16.UserRepository>(), )); - gh.singleton<_i20.Cached>(_i20.Cached(gh<_i17.SharedPreferences>())); - gh.factory<_i21.FacebookAuthBloc>(() => _i21.FacebookAuthBloc( + gh.singleton<_i18.Cached>(_i18.Cached(gh<_i15.SharedPreferences>())); + gh.factory<_i19.FacebookAuthBloc>(() => _i19.FacebookAuthBloc( authenticationRepository: gh<_i10.IFacebookRepositoryFacade>())); - gh.factory<_i22.ForgotPasswordBloc>(() => _i22.ForgotPasswordBloc( - gh<_i22.ForgotPasswordState>(), - forgotPasswordRepositoryFacade: - gh<_i12.IForgotPasswordRepositoryFacade>(), - )); - gh.factory<_i23.GoogleSignInBloc>(() => _i23.GoogleSignInBloc( - authenticationRepository: gh<_i14.IGoogleRepositoryFacade>())); - gh.lazySingleton<_i24.IAuthFacade>(() => _i25.FirebaseAuthFacade( + gh.factory<_i20.GoogleSignInBloc>(() => _i20.GoogleSignInBloc( + authenticationRepository: gh<_i12.IGoogleRepositoryFacade>())); + gh.lazySingleton<_i21.IAuthFacade>(() => _i22.FirebaseAuthFacade( gh<_i7.FirebaseAuth>(), - gh<_i20.Cached>(), + gh<_i18.Cached>(), )); - gh.lazySingleton<_i26.AppSettingsHelper>(() => _i26.AppSettingsHelper( - gh<_i20.Cached>(), + gh.lazySingleton<_i23.AppSettingsHelper>(() => _i23.AppSettingsHelper( + gh<_i18.Cached>(), gh<_i4.Connectivity>(), )); - gh.factory<_i27.AuthBloc>(() => _i27.AuthBloc(gh<_i24.IAuthFacade>())); - gh.singleton<_i28.EmailPasswordBloc>(_i28.EmailPasswordBloc( - authenticationRepository: gh<_i24.IAuthFacade>())); - gh.factory<_i29.HomeViewBloc>( - () => _i29.HomeViewBloc(gh<_i26.AppSettingsHelper>())); - gh.factory<_i30.InternetAndTimeBloc>( - () => _i30.InternetAndTimeBloc(gh<_i26.AppSettingsHelper>())); + gh.factory<_i24.AuthBloc>(() => _i24.AuthBloc(gh<_i21.IAuthFacade>())); + gh.singleton<_i25.EmailPasswordBloc>(_i25.EmailPasswordBloc( + authenticationRepository: gh<_i21.IAuthFacade>())); + gh.factory<_i26.HomeViewBloc>( + () => _i26.HomeViewBloc(gh<_i23.AppSettingsHelper>())); + gh.factory<_i27.InternetAndTimeBloc>( + () => _i27.InternetAndTimeBloc(gh<_i23.AppSettingsHelper>())); return this; } } class _$GoogleAuthenticationInjectableModule - extends _i31.GoogleAuthenticationInjectableModule {} + extends _i28.GoogleAuthenticationInjectableModule {} -class _$CoreInjectableModule extends _i32.CoreInjectableModule {} +class _$CoreInjectableModule extends _i29.CoreInjectableModule {} class _$AuthenticationMockModuleInjection - extends _i33.AuthenticationMockModuleInjection {} + extends _i30.AuthenticationMockModuleInjection {} class _$FirebaseAuthInjectableModule - extends _i34.FirebaseAuthInjectableModule {} + extends _i31.FirebaseAuthInjectableModule {} class _$FacebookAuthenticationInjectableModule - extends _i35.FacebookAuthenticationInjectableModule {} + extends _i32.FacebookAuthenticationInjectableModule {} diff --git a/lib/router/app_route.gr.dart b/lib/router/app_route.gr.dart index 7a5a657..c50a83f 100644 --- a/lib/router/app_route.gr.dart +++ b/lib/router/app_route.gr.dart @@ -11,11 +11,12 @@ // ignore_for_file: type=lint // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:auto_route/auto_route.dart' as _i13; -import 'package:flutter/material.dart' as _i14; +import 'package:auto_route/auto_route.dart' as _i15; +import 'package:flutter/material.dart' as _i16; -import '../contact_us/contact_us_page.dart' as _i11; -import '../core/domain/user.dart' as _i15; +import '../contact_us/view/contact_us_screen.dart' as _i11; +import '../contact_us/view/contact_us_success_screen.dart' as _i12; +import '../core/domain/user.dart' as _i17; import '../email_confirmation/email_confirmation.dart' as _i4; import '../home/view/home_screen.dart' as _i7; import '../latest_activities/view/latest_activities_screen.dart' as _i8; @@ -23,57 +24,58 @@ import '../onboarding/view/onboarding_screens.dart' as _i10; import '../onboarding/view/splash_screen.dart' as _i1; import '../phone_number_confirmation/view/phone_number_confirmation.dart' as _i3; -import '../profile/view/profile_page.dart' as _i12; +import '../profile/view/profile_page.dart' as _i14; import '../qr_code_screen/view/qr_code_screen.dart' as _i9; import '../savings/save_money_with_bucket/save_money_with_bucket.dart' as _i6; +import '../savings/view/savings_page.dart' as _i13; import '../sign_in/view/sign_in_page.dart' as _i2; import '../sign_up/view/signup_page.dart' as _i5; -class AppRoute extends _i13.RootStackRouter { - AppRoute([_i14.GlobalKey<_i14.NavigatorState>? navigatorKey]) +class AppRoute extends _i15.RootStackRouter { + AppRoute([_i16.GlobalKey<_i16.NavigatorState>? navigatorKey]) : super(navigatorKey); @override - final Map pagesMap = { + final Map pagesMap = { SplashRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i1.SplashScreen(), ); }, SignInRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i2.SignInScreen(), ); }, PhoneNumberConfirmationRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i3.PhoneNumberConfirmationScreen(), ); }, EmailConfirmationRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i4.EmailConfirmationScreen(), ); }, SignUpRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i5.SignUpScreen(), ); }, SaveMoneyRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i6.SaveMoneyScreen(), ); }, HomeRouter.name: (routeData) { final args = routeData.argsAs(); - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: _i7.HomeScreen( key: args.key, @@ -82,13 +84,13 @@ class AppRoute extends _i13.RootStackRouter { ); }, LatestActivitiesPage.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i8.LatestActivitiesPage(), ); }, QrCodeRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i9.QrCodeScreen(), ); @@ -96,7 +98,7 @@ class AppRoute extends _i13.RootStackRouter { OnboardingRoute.name: (routeData) { final args = routeData.argsAs( orElse: () => const OnboardingRouteArgs()); - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: _i10.OnboardingScreen( onGetStartedPressed: args.onGetStartedPressed, @@ -105,79 +107,90 @@ class AppRoute extends _i13.RootStackRouter { ); }, ContactUsRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, child: const _i11.ContactUsScreen(), ); }, ContactUsSuccessRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, - child: const _i11.ContactUsSuccessScreen(), + child: const _i12.ContactUsSuccessScreen(), + ); + }, + SavingsPage.name: (routeData) { + return _i15.MaterialPageX( + routeData: routeData, + child: const _i13.SavingsPage(), ); }, ProfileRoute.name: (routeData) { - return _i13.MaterialPageX( + return _i15.MaterialPageX( routeData: routeData, - child: const _i12.ProfileScreen(), + child: const _i14.ProfileScreen(), ); }, }; @override - List<_i13.RouteConfig> get routes => [ - _i13.RouteConfig( + List<_i15.RouteConfig> get routes => [ + _i15.RouteConfig( SplashRoute.name, path: '/', ), - _i13.RouteConfig( + _i15.RouteConfig( SignInRoute.name, path: '/sign-in-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( PhoneNumberConfirmationRoute.name, path: '/phone-number-confirmation-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( EmailConfirmationRoute.name, path: '/email-confirmation-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( SignUpRoute.name, path: '/sign-up-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( SaveMoneyRoute.name, path: '/save-money-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( HomeRouter.name, path: '/home-screen', children: [ - _i13.RouteConfig( + _i15.RouteConfig( + SavingsPage.name, + path: 'savings', + parent: HomeRouter.name, + ), + _i15.RouteConfig( ProfileRoute.name, path: 'profile', parent: HomeRouter.name, - ) + ), ], ), - _i13.RouteConfig( + _i15.RouteConfig( LatestActivitiesPage.name, path: 'latestActivities', ), - _i13.RouteConfig( + _i15.RouteConfig( QrCodeRoute.name, path: '/qr-code-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( OnboardingRoute.name, path: '/onboarding-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( ContactUsRoute.name, path: '/contact-us-screen', ), - _i13.RouteConfig( + _i15.RouteConfig( ContactUsSuccessRoute.name, path: '/contact-us-success-screen', ), @@ -186,7 +199,7 @@ class AppRoute extends _i13.RootStackRouter { /// generated route for /// [_i1.SplashScreen] -class SplashRoute extends _i13.PageRouteInfo { +class SplashRoute extends _i15.PageRouteInfo { const SplashRoute() : super( SplashRoute.name, @@ -198,7 +211,7 @@ class SplashRoute extends _i13.PageRouteInfo { /// generated route for /// [_i2.SignInScreen] -class SignInRoute extends _i13.PageRouteInfo { +class SignInRoute extends _i15.PageRouteInfo { const SignInRoute() : super( SignInRoute.name, @@ -210,7 +223,7 @@ class SignInRoute extends _i13.PageRouteInfo { /// generated route for /// [_i3.PhoneNumberConfirmationScreen] -class PhoneNumberConfirmationRoute extends _i13.PageRouteInfo { +class PhoneNumberConfirmationRoute extends _i15.PageRouteInfo { const PhoneNumberConfirmationRoute() : super( PhoneNumberConfirmationRoute.name, @@ -222,7 +235,7 @@ class PhoneNumberConfirmationRoute extends _i13.PageRouteInfo { /// generated route for /// [_i4.EmailConfirmationScreen] -class EmailConfirmationRoute extends _i13.PageRouteInfo { +class EmailConfirmationRoute extends _i15.PageRouteInfo { const EmailConfirmationRoute() : super( EmailConfirmationRoute.name, @@ -234,7 +247,7 @@ class EmailConfirmationRoute extends _i13.PageRouteInfo { /// generated route for /// [_i5.SignUpScreen] -class SignUpRoute extends _i13.PageRouteInfo { +class SignUpRoute extends _i15.PageRouteInfo { const SignUpRoute() : super( SignUpRoute.name, @@ -246,7 +259,7 @@ class SignUpRoute extends _i13.PageRouteInfo { /// generated route for /// [_i6.SaveMoneyScreen] -class SaveMoneyRoute extends _i13.PageRouteInfo { +class SaveMoneyRoute extends _i15.PageRouteInfo { const SaveMoneyRoute() : super( SaveMoneyRoute.name, @@ -258,11 +271,11 @@ class SaveMoneyRoute extends _i13.PageRouteInfo { /// generated route for /// [_i7.HomeScreen] -class HomeRouter extends _i13.PageRouteInfo { +class HomeRouter extends _i15.PageRouteInfo { HomeRouter({ - _i14.Key? key, - required _i15.User user, - List<_i13.PageRouteInfo>? children, + _i16.Key? key, + required _i17.User user, + List<_i15.PageRouteInfo>? children, }) : super( HomeRouter.name, path: '/home-screen', @@ -282,9 +295,9 @@ class HomeRouterArgs { required this.user, }); - final _i14.Key? key; + final _i16.Key? key; - final _i15.User user; + final _i17.User user; @override String toString() { @@ -294,7 +307,7 @@ class HomeRouterArgs { /// generated route for /// [_i8.LatestActivitiesPage] -class LatestActivitiesPage extends _i13.PageRouteInfo { +class LatestActivitiesPage extends _i15.PageRouteInfo { const LatestActivitiesPage() : super( LatestActivitiesPage.name, @@ -306,7 +319,7 @@ class LatestActivitiesPage extends _i13.PageRouteInfo { /// generated route for /// [_i9.QrCodeScreen] -class QrCodeRoute extends _i13.PageRouteInfo { +class QrCodeRoute extends _i15.PageRouteInfo { const QrCodeRoute() : super( QrCodeRoute.name, @@ -318,10 +331,10 @@ class QrCodeRoute extends _i13.PageRouteInfo { /// generated route for /// [_i10.OnboardingScreen] -class OnboardingRoute extends _i13.PageRouteInfo { +class OnboardingRoute extends _i15.PageRouteInfo { OnboardingRoute({ void Function()? onGetStartedPressed, - _i14.Key? key, + _i16.Key? key, }) : super( OnboardingRoute.name, path: '/onboarding-screen', @@ -342,7 +355,7 @@ class OnboardingRouteArgs { final void Function()? onGetStartedPressed; - final _i14.Key? key; + final _i16.Key? key; @override String toString() { @@ -352,7 +365,7 @@ class OnboardingRouteArgs { /// generated route for /// [_i11.ContactUsScreen] -class ContactUsRoute extends _i13.PageRouteInfo { +class ContactUsRoute extends _i15.PageRouteInfo { const ContactUsRoute() : super( ContactUsRoute.name, @@ -363,8 +376,8 @@ class ContactUsRoute extends _i13.PageRouteInfo { } /// generated route for -/// [_i11.ContactUsSuccessScreen] -class ContactUsSuccessRoute extends _i13.PageRouteInfo { +/// [_i12.ContactUsSuccessScreen] +class ContactUsSuccessRoute extends _i15.PageRouteInfo { const ContactUsSuccessRoute() : super( ContactUsSuccessRoute.name, @@ -375,8 +388,20 @@ class ContactUsSuccessRoute extends _i13.PageRouteInfo { } /// generated route for -/// [_i12.ProfileScreen] -class ProfileRoute extends _i13.PageRouteInfo { +/// [_i13.SavingsPage] +class SavingsPage extends _i15.PageRouteInfo { + const SavingsPage() + : super( + SavingsPage.name, + path: 'savings', + ); + + static const String name = 'SavingsPage'; +} + +/// generated route for +/// [_i14.ProfileScreen] +class ProfileRoute extends _i15.PageRouteInfo { const ProfileRoute() : super( ProfileRoute.name, diff --git a/pubspec.lock b/pubspec.lock index 5f4fd57..270dd13 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "64fcb0dbca4386356386c085142fa6e79c00a3326ceaa778a2d25f5d9ba61441" + sha256: "330d7fcbb72624f5b6d374af8b059b0ef4ba96ba5b8987f874964a1287eb617d" url: "https://pub.dev" source: hosted - version: "1.0.16" + version: "1.0.18" analyzer: dependency: transitive description: @@ -180,26 +180,26 @@ packages: dependency: "direct main" description: name: cloud_firestore - sha256: "65f148d9f5b4f389320abb45847120cf5e46094c1a8cbc64934ffc1e29688596" + sha256: "0ad93f01816ab7e59560bffeece2d19cec872fedfea04a7ad5be418cad25d574" url: "https://pub.dev" source: hosted - version: "4.4.3" + version: "4.4.5" cloud_firestore_platform_interface: dependency: transitive description: name: cloud_firestore_platform_interface - sha256: "43ccae09f7e0c82752e69c251c6dc5efcdff4ddcfc09564175a28657bbd74188" + sha256: "6255cf3ad845d44c6c69a7db51139c8d90691e435dd175578f6365f10c023fcc" url: "https://pub.dev" source: hosted - version: "5.11.3" + version: "5.11.5" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web - sha256: e054c007217e28e07179bbae0564c2a4f6338a60bddb0c139e4834e953f4b95c + sha256: "3bc08abdeb21a59e80491aee827895aaa3c6da602bad9ab68d83e1ab13c951b1" url: "https://pub.dev" source: hosted - version: "3.3.3" + version: "3.3.5" code_builder: dependency: transitive description: @@ -248,6 +248,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.6.3" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + url: "https://pub.dev" + source: hosted + version: "0.3.3+4" crypto: dependency: transitive description: @@ -348,34 +356,34 @@ packages: dependency: "direct main" description: name: firebase_auth - sha256: "9907d80446466e638dad31c195150b305dffd145dc57610fcd12c72289432143" + sha256: "94c229e296a5b9ee5c8cda918e0b320e3a0cc4f6a349cd410c427da347f2a244" url: "https://pub.dev" source: hosted - version: "4.2.9" + version: "4.3.0" firebase_auth_platform_interface: dependency: "direct dev" description: name: firebase_auth_platform_interface - sha256: c645fec50b0391aa878288f58fa4fe9762c271380c457aedf5c7c9b718604f68 + sha256: "1217d8aa313b49d58b489aa8879544563abc8793d9612ff20d8df193f202aedc" url: "https://pub.dev" source: hosted - version: "6.11.11" + version: "6.12.0" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "2dcf2a36852b9091741b4a4047a02e1f2c43a62c6cacec7df573a793a6543e6d" + sha256: bf7f1a87995a58b0f07dc617806dabd7ff25c64be7fa47b41ab1bb9a485b0062 url: "https://pub.dev" source: hosted - version: "5.2.8" + version: "5.2.10" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: fe30ac230f12f8836bb97e6e09197340d3c584526825b1746ea362a82e1e43f7 + sha256: "75f747cafd7cbd6c00b908e3a7aa59fc31593d46ba8165d9ee8a79e69464a394" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.8.0" firebase_core_platform_interface: dependency: "direct main" description: @@ -388,10 +396,10 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "291fbcace608aca6c860652e1358ef89752be8cc3ef227f8bbcd1e62775b833a" + sha256: "0c1cf1f1022d2245ac117443bb95207952ca770281524d2908e323bc063fb8ff" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" fixnum: dependency: transitive description: @@ -510,10 +518,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: "97c5b291b4fd34ae4f55d6a4c05841d4d0ed94952e033c5a6529e1b47b4d2a29" + sha256: "12006889e2987c549c4c1ec1a5ba4ec4b24d34d2469ee5f9476c926dcecff266" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.4" flutter_test: dependency: "direct dev" description: flutter @@ -592,18 +600,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: f27bd56527c567594167bd0a46f7ceb93122ed064d2eee612413d6af0bb2e2e5 + sha256: "6a740e8498920ecf5fc2849ae0e4412536d700230bc3169493a1d031fdfe1cca" url: "https://pub.dev" source: hosted - version: "6.1.7" + version: "6.1.8" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "2575ef0d06dbe6923cedf39766da8305d407bb891d9f4a59502c642719776c5c" + sha256: "2e1df687b17f7fddcaf9a0c7f994d0d19b5d41e8ce1d943013befd0a0ae67403" url: "https://pub.dev" source: hosted - version: "5.6.0" + version: "5.6.1" google_sign_in_platform_interface: dependency: transitive description: @@ -728,18 +736,18 @@ packages: dependency: transitive description: name: local_auth_android - sha256: "6e97e997530f7bfcc696cc0ed84a019209719dd6e854675da81803d02f10d8fc" + sha256: "2ccfadbb6fbc63e6674ad58a350b06188829e62669d67a0c752c4e43cb88272a" url: "https://pub.dev" source: hosted - version: "1.0.20" + version: "1.0.21" local_auth_ios: dependency: transitive description: name: local_auth_ios - sha256: b4b7a02eec2bd8ffea78026658264e7a720c841cca7732dfa27e36af2f727dd8 + sha256: "604078f6492fe7730fc5bb8e4f2cfe2bc287a9b499ea0ff30a29925fc1873728" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" local_auth_platform_interface: dependency: transitive description: @@ -752,10 +760,10 @@ packages: dependency: transitive description: name: local_auth_windows - sha256: "69c4a6b1201e7b5467e7180c7dd84cf96c308982680cc1778984552bea84b0bc" + sha256: bfe0deede77fb36faa62799977074f35ac096d7cafce0c29a44a173d2a2a4b94 url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "1.0.7" logging: dependency: "direct main" description: @@ -861,37 +869,37 @@ packages: source: hosted version: "1.0.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider - sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4 url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.0.14" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" + sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7" url: "https://pub.dev" source: hosted - version: "2.0.23" + version: "2.0.24" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 + sha256: "12eee51abdf4d34c590f043f45073adbb45514a108bd9db4491547a2fd891059" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.2.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" + sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" url: "https://pub.dev" source: hosted - version: "2.1.9" + version: "2.1.10" path_provider_platform_interface: dependency: transitive description: @@ -904,10 +912,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" + sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130 url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" petitparser: dependency: transitive description: @@ -972,6 +980,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + qr: + dependency: transitive + description: + name: qr + sha256: "5c4208b4dc0d55c3184d10d83ee0ded6212dc2b5e2ba17c5a0c0aab279128d21" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + qr_code_scanner: + dependency: "direct main" + description: + name: qr_code_scanner + sha256: f23b68d893505a424f0bd2e324ebea71ed88465d572d26bb8d2e78a4749591fd + url: "https://pub.dev" + source: hosted + version: "1.0.1" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + sha256: c5c121c54cb6dd837b9b9d57eb7bc7ec6df4aee741032060c8833a678c80b87e + url: "https://pub.dev" + source: hosted + version: "4.0.0" quiver: dependency: transitive description: @@ -988,6 +1020,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: "8c6892037b1824e2d7e8f59d54b3105932899008642e6372e5079c6939b4b625" + url: "https://pub.dev" + source: hosted + version: "6.3.1" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "82ddd4ab9260c295e6e39612d4ff00390b9a7a21f1bb1da771e2f232d80ab8a1" + url: "https://pub.dev" + source: hosted + version: "3.2.0" shared_preferences: dependency: "direct main" description: @@ -1000,26 +1048,26 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: a51a4f9375097f94df1c6e0a49c0374440d31ab026b59d58a7e7660675879db4 + sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521 url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.0.17" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6b84fdf06b32bb336f972d373cd38b63734f3461ba56ac2ba01b56d052796259" + sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: d7fb71e6e20cd3dfffcc823a28da3539b392e53ed5fc5c2b90b55fdaa8a7e8fa + sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" shared_preferences_platform_interface: dependency: transitive description: @@ -1032,18 +1080,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "6737b757e49ba93de2a233df229d0b6a87728cea1684da828cbc718b65dcf9d7" + sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.6" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: bd014168e8484837c39ef21065b78f305810ceabc1d4f90be6e3b392ce81b46d + sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" shelf: dependency: transitive description: @@ -1201,6 +1249,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "206fb8334a700ef7754d6a9ed119e7349bc830448098f21a69bf1b4ed038cabc" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa" + url: "https://pub.dev" + source: hosted + version: "2.0.16" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: a83ba3607a507758669cfafb03f9de09bf6e6280c14d9b9cb18f013e406dcacd + url: "https://pub.dev" + source: hosted + version: "3.0.5" user_repository: dependency: "direct main" description: @@ -1220,26 +1300,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: e43c38822e7d2facd790fd617ce16b10cc359a4b094d5772e3198904270918ef + sha256: "4cf8e60dbe4d3a693d37dff11255a172594c0793da542183cbfe7fe978ae4aaa" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.4" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "4a85a8563405bfe223052a85d6f8bc276ba3a22e12acfa3fd9a7108c67b32076" + sha256: "278ad5f816f58b1967396d1f78ced470e3e58c9fe4b27010102c0a595c764468" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.4" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "9e8066d2f18e88f2fb1cf6c8ca567417bdfb0145ac28519dcca3c15d42a10b3e" + sha256: "0bf61ad56e6fd6688a2865d3ceaea396bc6a0a90ea0d7ad5049b1b76c09d6163" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.4" vector_math: dependency: transitive description: @@ -1288,6 +1368,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: "47663d51a9061451aa3880a214ee9a65dcbb933b77bc44388e194279ab3ccaf6" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "34f83c2f0f64c75ad75c77a2ccfc8d2e531afbe8ad41af1fd787d6d33336aa90" + url: "https://pub.dev" + source: hosted + version: "3.4.3" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: "1939c39e2150fb4d30fd3cc59a891a49fed9935db53007df633ed83581b6117b" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: ab12479f7a0cf112b9420c36aaf206a1ca47cd60cd42de74a4be2e97a697587b + url: "https://pub.dev" + source: hosted + version: "3.2.1" widgetbook: dependency: "direct main" description: