diff --git a/.flutter-plugins b/.flutter-plugins new file mode 100644 index 00000000..556e8dbd --- /dev/null +++ b/.flutter-plugins @@ -0,0 +1,21 @@ +# This is a generated file; do not edit or check into version control. +device_info_plus=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-10.1.2\\ +firebase_auth=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_auth-4.16.0\\ +firebase_auth_web=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_auth_web-5.8.13\\ +firebase_core=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_core-2.24.2\\ +firebase_core_web=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_core_web-2.10.0\\ +google_sign_in=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in-6.2.1\\ +google_sign_in_android=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_android-6.1.28\\ +google_sign_in_ios=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_ios-5.7.7\\ +google_sign_in_web=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_web-0.12.4+2\\ +syncfusion_flutter_pdfviewer=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\syncfusion_flutter_pdfviewer-26.2.11\\ +syncfusion_pdfviewer_macos=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\syncfusion_pdfviewer_macos-26.2.11\\ +syncfusion_pdfviewer_web=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\syncfusion_pdfviewer_web-26.2.11\\ +syncfusion_pdfviewer_windows=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\syncfusion_pdfviewer_windows-26.2.11\\ +url_launcher=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher-6.3.0\\ +url_launcher_android=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_android-6.3.10\\ +url_launcher_ios=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_ios-6.3.1\\ +url_launcher_linux=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_linux-3.2.0\\ +url_launcher_macos=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_macos-3.2.0\\ +url_launcher_web=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_web-2.3.3\\ +url_launcher_windows=C:\\Users\\SMIT YENKAR\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_windows-3.1.2\\ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 00000000..7551713f --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.16.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.7.7\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"syncfusion_flutter_pdfviewer","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\syncfusion_flutter_pdfviewer-26.2.11\\\\","native_build":true,"dependencies":["device_info_plus"]},{"name":"url_launcher_ios","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_ios-6.3.1\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.16.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_android","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_android-6.1.28\\\\","native_build":true,"dependencies":[]},{"name":"syncfusion_flutter_pdfviewer","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\syncfusion_flutter_pdfviewer-26.2.11\\\\","native_build":true,"dependencies":["device_info_plus"]},{"name":"url_launcher_android","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_android-6.3.10\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.16.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.7.7\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"syncfusion_pdfviewer_macos","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\syncfusion_pdfviewer_macos-26.2.11\\\\","native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_macos-3.2.0\\\\","native_build":true,"dependencies":[]}],"linux":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","native_build":false,"dependencies":[]},{"name":"url_launcher_linux","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_linux-3.2.0\\\\","native_build":true,"dependencies":[]}],"windows":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","native_build":false,"dependencies":[]},{"name":"firebase_auth","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.16.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"syncfusion_pdfviewer_windows","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\syncfusion_pdfviewer_windows-26.2.11\\\\","native_build":true,"dependencies":[]},{"name":"url_launcher_windows","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_windows-3.1.2\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"device_info_plus","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-10.1.2\\\\","dependencies":[]},{"name":"firebase_auth_web","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth_web-5.8.13\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core_web-2.10.0\\\\","dependencies":[]},{"name":"google_sign_in_web","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_web-0.12.4+2\\\\","dependencies":[]},{"name":"syncfusion_pdfviewer_web","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\syncfusion_pdfviewer_web-26.2.11\\\\","dependencies":[]},{"name":"url_launcher_web","path":"C:\\\\Users\\\\SMIT YENKAR\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_web-2.3.3\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"device_info_plus","dependencies":[]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"syncfusion_flutter_pdfviewer","dependencies":["device_info_plus","syncfusion_pdfviewer_web","syncfusion_pdfviewer_macos","syncfusion_pdfviewer_windows","url_launcher"]},{"name":"syncfusion_pdfviewer_macos","dependencies":[]},{"name":"syncfusion_pdfviewer_web","dependencies":[]},{"name":"syncfusion_pdfviewer_windows","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2024-08-30 21:34:46.445202","version":"3.24.0","swift_package_manager_enabled":false} \ No newline at end of file diff --git a/.gitignore b/.gitignore index c9583676..6503b5e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,164 +1,43 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release -android/.gitignore -android/build.gradle -android/gradle.properties -android/settings.gradle -android/app/build.gradle -android/app/src/debug/AndroidManifest.xml -android/app/src/main/AndroidManifest.xml -android/app/src/main/java/com/getflutterfire/get_flutter_fire/MainActivity.java -android/app/src/main/res/drawable/launch_background.xml -android/app/src/main/res/drawable-v21/launch_background.xml -android/app/src/main/res/mipmap-hdpi/ic_launcher.png -android/app/src/main/res/mipmap-mdpi/ic_launcher.png -android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -android/app/src/main/res/values/styles.xml -android/app/src/main/res/values-night/styles.xml -android/app/src/profile/AndroidManifest.xml -android/gradle/wrapper/gradle-wrapper.properties -ios/.gitignore -ios/Flutter/Debug.xcconfig -ios/Flutter/Release.xcconfig -ios/Runner/AppDelegate.swift -ios/Runner/Runner-Bridging-Header.h -ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md -ios/Runner/Base.lproj/LaunchScreen.storyboard -ios/Runner/Base.lproj/Main.storyboard -ios/Runner.xcodeproj/project.pbxproj -ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata -ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings -ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme -ios/Runner.xcworkspace/contents.xcworkspacedata -ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings -ios/RunnerTests/RunnerTests.swift -linux/.gitignore -linux/CMakeLists.txt -linux/main.cc -linux/my_application.cc -linux/my_application.h -linux/flutter/CMakeLists.txt -linux/flutter/generated_plugin_registrant.cc -linux/flutter/generated_plugin_registrant.h -linux/flutter/generated_plugins.cmake -macos/.gitignore -macos/Flutter/Flutter-Debug.xcconfig -macos/Flutter/Flutter-Release.xcconfig -macos/Flutter/GeneratedPluginRegistrant.swift -macos/Runner/AppDelegate.swift -macos/Runner/DebugProfile.entitlements -macos/Runner/MainFlutterWindow.swift -macos/Runner/Release.entitlements -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json -macos/Runner/Base.lproj/MainMenu.xib -macos/Runner/Configs/AppInfo.xcconfig -macos/Runner/Configs/Debug.xcconfig -macos/Runner/Configs/Release.xcconfig -macos/Runner/Configs/Warnings.xcconfig -macos/Runner.xcodeproj/project.pbxproj -macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme -macos/Runner.xcworkspace/contents.xcworkspacedata -macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -macos/RunnerTests/RunnerTests.swift -web/favicon.png -web/index.html -web/manifest.json -web/icons/Icon-192.png -web/icons/Icon-512.png -web/icons/Icon-maskable-192.png -web/icons/Icon-maskable-512.png -windows/.gitignore -windows/CMakeLists.txt -windows/flutter/CMakeLists.txt -windows/flutter/generated_plugin_registrant.cc -windows/flutter/generated_plugin_registrant.h -windows/flutter/generated_plugins.cmake -windows/runner/CMakeLists.txt -windows/runner/flutter_window.cpp -windows/runner/flutter_window.h -windows/runner/main.cpp -windows/runner/resource.h -windows/runner/runner.exe.manifest -windows/runner/Runner.rc -windows/runner/utils.cpp -windows/runner/utils.h -windows/runner/win32_window.cpp -windows/runner/win32_window.h -windows/runner/resources/app_icon.ico -lib/firebase_options.dart -pubspec.lock -pubspec.lock -server/functions/firebase_options.json +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata index 784ce129..90eabcff 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3" + revision: "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" channel: "stable" project_type: app @@ -13,11 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: android + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: ios + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: linux + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: macos + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 - platform: web - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: windows + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 # User provided section diff --git a/AuthController.dart b/AuthController.dart new file mode 100644 index 00000000..59be1690 --- /dev/null +++ b/AuthController.dart @@ -0,0 +1,9 @@ +import 'package:get/get.dart'; +import 'package:google_sign_in/google_sign_in.dart'; + +class AuthController extends GetxController { + + void loginWithEmail() async{ + final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); + } +} \ No newline at end of file diff --git a/BackButton.dart b/BackButton.dart new file mode 100644 index 00000000..c1957ca3 --- /dev/null +++ b/BackButton.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:get/get.dart'; + +class MyBackButton extends StatelessWidget { + const MyBackButton({super.key}); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () { + Get.back(); + }, + child: Row( + children: [ + SvgPicture.asset("Assets/Icons/back.svg"), + SizedBox(width: 10), + Text( + "Back", + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: Theme.of(context).colorScheme.surface, + ), + ) + ], + ), + ); + } +} diff --git a/BookCard.dart b/BookCard.dart new file mode 100644 index 00000000..504b1a75 --- /dev/null +++ b/BookCard.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; + +class BookCard extends StatelessWidget { + final String coverUrl; + final String title; + final VoidCallback ontap; + const BookCard({super.key, required this.coverUrl, required this.title, required this.ontap}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(right: 20), + child: InkWell( + onTap: ontap, + child: SizedBox( + width: 120, + child: Column( + children: [ + Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: + Theme.of(context) + .colorScheme + .primary + .withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: Offset(2, 2), + ) + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.asset( + coverUrl, + width: 120, + ), + ), + ), + SizedBox(height: 10), + Text( + title, + textAlign: TextAlign.center, + maxLines: 1, + style: Theme.of(context).textTheme.bodyMedium, + ) + ], + ), + ), + ), + ); + } +} diff --git a/BookController.dart b/BookController.dart new file mode 100644 index 00000000..e69de29b diff --git a/BookModel.dart b/BookModel.dart new file mode 100644 index 00000000..27c400db --- /dev/null +++ b/BookModel.dart @@ -0,0 +1,102 @@ +class BookModel { + String? id; + String? title; + String? description; + String? rating; + int? pages; + String? language; + String? audioLen; + String? author; + String? aboutAuthor; + String? bookurl; + String? audioUrl; + String? category; + String? coverUrl; + int? price; + String? numberofRating; + + BookModel( + {this.id, + this.title, + this.description, + this.rating, + this.pages, + this.language, + this.audioLen, + this.author, + this.aboutAuthor, + this.bookurl, + this.audioUrl, + this.category, + this.price, + this.coverUrl, + this.numberofRating}); + + BookModel.fromJson(Map json) { + if (json["id"] is String) { + id = json["id"]; + } + if (json["title"] is String) { + title = json["title"]; + } + if (json["description"] is String) { + description = json["description"]; + } + if (json["rating"] is String) { + rating = json["rating"]; + } + if (json["pages"] is int) { + pages = json["pages"]; + } + if (json["language"] is String) { + language = json["language"]; + } + if (json["audioLen"] is String) { + audioLen = json["audioLen"]; + } + if (json["author"] is String) { + author = json["author"]; + } + if (json["aboutAuthor"] is String) { + aboutAuthor = json["aboutAuthor"]; + } + if (json["bookurl"] is String) { + bookurl = json["bookurl"]; + } + if (json["audioUrl"] is String) { + audioUrl = json["audioUrl"]; + } + if (json["category"] is String) { + category = json["category"]; + } + if (json["coverUrl"] is String) { + coverUrl = json["coverUrl"]; + } + if (json["price"] is int) { + price = json["price"]; + } + if (json["numberofRating"] is int) { + numberofRating = json["numberofRating"]; + } + } + + Map toJson() { + final Map _data = {}; + _data["id"] = id; + _data["title"] = title; + _data["description"] = description; + _data["rating"] = rating; + _data["pages"] = pages; + _data["language"] = language; + _data["audioLen"] = audioLen; + _data["author"] = author; + _data["aboutAuthor"] = aboutAuthor; + _data["bookurl"] = bookurl; + _data["audioUrl"] = audioUrl; + _data["category"] = category; + _data["coverUrl"] = coverUrl; + _data["price"] = price; + _data["numberofRating"] = numberofRating; + return _data; + } +} \ No newline at end of file diff --git a/BookTile.dart b/BookTile.dart new file mode 100644 index 00000000..e15f0a28 --- /dev/null +++ b/BookTile.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +class BookTile extends StatelessWidget { + final String title; + final String coverUrl; + final String author; + final int price; + final String rating; + final int totalRating; + + const BookTile( + {super.key, + required this.title, + required this.coverUrl, + required this.author, + required this.price, + required this.rating, + required this.totalRating, required Null Function() ontap, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 15), + child: InkWell( + onTap: () {}, + child: Container( + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(15), + ), + child: Row( + children: [ + Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Theme.of(context) + .colorScheme + .primary + .withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: Offset(2, 2), + ) + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.asset( + coverUrl, + width: 100, + ), + ), + ), + SizedBox(width: 10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + maxLines: 2, + style: Theme.of(context).textTheme.bodyLarge, + ), + SizedBox(height: 4), + Text("By : $author", + style: Theme.of(context).textTheme.labelMedium), + SizedBox(height: 5), + Text( + "Price : $price", + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: Theme.of(context).colorScheme.secondary, + ), + ), + SizedBox(height: 10), + Row( + children: [ + SvgPicture.asset("Assets/Icons/star.svg"), + Text( + rating, + style: Theme.of(context).textTheme.bodyMedium, + ), + Text( + "($totalRating ratings)", + style: Theme.of(context).textTheme.labelMedium, + ), + ], + ) + ], + )) + ], + ), + ), + ), + ); + } +} diff --git a/Data.dart b/Data.dart new file mode 100644 index 00000000..729b4ad7 --- /dev/null +++ b/Data.dart @@ -0,0 +1,93 @@ +import 'package:e_book_marketplace/Models/BookModel.dart'; + +var categoryData = [ + { + "icon": "Assets/Icons/heart.svg", + "lebel": "Romance", + }, + { + "icon": "Assets/Icons/plane.svg", + "lebel": "Travel", + }, + { + "icon": "Assets/Icons/world.svg", + "lebel": "Documentary", + }, + { + "icon": "Assets/Icons/heart.svg", + "lebel": "Love Story", + }, +]; + +var bookData = [ + BookModel( + id: "1", + title: + "Boundaries", + description: + "Healthy relationships depend on maintaining effective personal boundaries. But many people don't know where to start. The New York Times bestselling book Boundaries has helped millions understand how to set boundaries in a loving way that builds relationships.", + aboutAuthor: "Henry Cloud is an American Christian self-help author.", + audioLen: "20", + author: "Henry Cloud", + coverUrl: "Assets/Images/boundraries.jpg", + rating: "4.2", + category: "Documentary", + numberofRating: "10,", + price: 100, + pages: 234, + language: "ENG", + bookurl: + "https://cdn.syncfusion.com/content/PDFViewer/flutter-succinctly.pdf"), + BookModel( + id: "2", + title: "Daily Stoice", + description: + " The Daily Stoic is an original translation of selections from several stoic philosophers including Epictetus, Marcus Aurelius, Seneca, Musonius Rufus, Zeno and others. It aims to provide lessons about personal growth, life management and practicing mindfulness.", + aboutAuthor: "Ryan Holiday is an American marketer, author, businessman, notable for marketing Stoic philosophy in the form of books.", + audioLen: "20", + author: "Ryan Holiday", + coverUrl: "Assets/Images/daily stoic.jpg", + rating: "4.2", + category: "Documentary", + price: 100, + numberofRating: "10,", + language: "ENG", + pages: 234, + bookurl: + "https://cdn.syncfusion.com/content/PDFViewer/flutter-succinctly.pdf"), + BookModel( + id: "3", + title: "Give and Take", + description: + "The theory of 'givers' in 'Give and Take' challenges existing practices in corporate settings by proposing that success is not achieved by pushing others down, but by building others up. This contradicts the traditional belief that self-interest is the key to success.", + aboutAuthor: "Adam M. Grant is an American popular science author, and professor at the Wharton School of the University of Pennsylvania specializing in organizational psychology.", + audioLen: "20", + author: "Adam Grant", + coverUrl: "Assets/Images/Give and Take.jpg", + rating: "4.2", + category: "Documentary", + numberofRating: "10,", + price: 100, + language: "ENG", + pages: 234, + bookurl: + "https://cdn.syncfusion.com/content/PDFViewer/flutter-succinctly.pdf"), + BookModel( + id: "4", + title: "When The Moon Split", + description: + "The biography of the Prophet is a very noble and exalted subject by which Muslims learn about the rise of Islam, and how the Prophet Muhammad (S) was chosen by Allah to receive the divine revelation.", + aboutAuthor: "Safiur Rahman Mubarakpuri was an Indian Islamic scholar, teacher and writer within the Salafi creed. ", + audioLen: "20", + author: "Safiur Rahman Mubarakpuri", + coverUrl: "Assets/Images/When the moon split.jpg", + rating: "4.2", + category: "Documentary", + price: 100, + pages: 234, + language: "ENG", + numberofRating: "10,", + bookurl: + "https://cdn.syncfusion.com/content/PDFViewer/flutter-succinctly.pdf", + ) +]; \ No newline at end of file diff --git a/MultiLineTextFormField.dart b/MultiLineTextFormField.dart new file mode 100644 index 00000000..c25dff4c --- /dev/null +++ b/MultiLineTextFormField.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +class MultiLineTextField extends StatelessWidget { + final String hintText; + final TextEditingController controller; + const MultiLineTextField({ + super.key, + required this.hintText, + required this.controller, + }); + + @override + Widget build(BuildContext context) { + return TextFormField( + maxLines: 5, + controller: controller, + decoration: InputDecoration( + fillColor: Theme.of(context).colorScheme.primary.withOpacity(0.2), + filled: true, + hintText: hintText, + ), + ); + } +} diff --git a/MyButton.dart b/MyButton.dart new file mode 100644 index 00000000..e69de29b diff --git a/MyTextFormField.dart b/MyTextFormField.dart new file mode 100644 index 00000000..f2e9e099 --- /dev/null +++ b/MyTextFormField.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +class MyTextFormField extends StatelessWidget { + final String hintText; + final IconData icon; + final TextEditingController controller; + const MyTextFormField( + {super.key, + required this.hintText, + required this.icon, + required this.controller, + }); + + @override + Widget build(BuildContext context) { + return TextFormField( + controller: controller, + decoration: InputDecoration( + fillColor: Theme.of(context).colorScheme.primary.withOpacity(0.2), + filled: true, + hintText: hintText, + prefixIcon: Icon( + icon, + color: Theme.of(context).colorScheme.primary, + ), + ), + ); + } +} diff --git a/PdfController.dart b/PdfController.dart new file mode 100644 index 00000000..e9696434 --- /dev/null +++ b/PdfController.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:get/get_state_manager/get_state_manager.dart'; +import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; +import 'package:get/get.dart'; + +class PdfController extends GetxController { + final GlobalKey pdfViewerKey = GlobalKey(); + + @override + void onInit(){ + + super.onInit(); + } +} diff --git a/PrimaryButton.dart b/PrimaryButton.dart new file mode 100644 index 00000000..f20d6f54 --- /dev/null +++ b/PrimaryButton.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +class PrimaryButton extends StatelessWidget { + final String btnName; + final VoidCallback ontap; + const PrimaryButton({super.key,required this.btnName,required this.ontap}); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: ontap, + child: Container( + height: 55, + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primary, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + btnName, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: Theme.of(context).colorScheme.surface, + letterSpacing: 1.5, + ), + ), + ], + ), + ), + ); + } +} diff --git a/README.md b/README.md index 451d649a..47643ad7 100644 --- a/README.md +++ b/README.md @@ -1,132 +1,84 @@ -# get-flutter-fire -This codebase provides a boilerplate code utilizing the following three technologies: +# E-Book Marketplace App Project Using-Flutter-Getx-Firebase +E-Book Marketplace is a Flutter-based application that provides a seamless platform for users to browse eBooks. +## Tech Stack -1. Flutter 3.0 - For UX and uses Dart languange. See [https://flutter.dev/] -2. GetX - State management for Flutter. See [https://github.com/jonataslaw/getx/tree/4.6.1] -3. Firebase - For Backend as a Service. See [https://firebase.google.com/] - 1. Easy Authentication flow - 2. Server side functions - 3. Remote Configurations which can be used for A/B testing +**Client:** Flutter,Dart -This was created as part of my own learning process and you will find that git commits were made according to the Steps listed below. You can use the git version history to check each commit and learn step by step, as I did. +**Server:** Firebase. -I am also using this codebase as an experiment towards hiring people (freshers especially but not limited to them) for my development team. If you are in Mumbai and are interested to join my team, you can use this codebase in the following manner: +## Features -* Fork the codebase -* Add your own firebase_options.dart (follow steps and see firebase_options.template) -* **Build your own application using this as a base (integrating any existing project of yours also works)**, or complete a TODO or fix a bug (only if you have no other ideas) -* Send me a Pull Request. Mention a way of connecting with you in the commit message along with details of commit. Also modify ReadMe to say what you have changed in detail. -* I will go through the request and then connect with you if I find the entry to be interesting and take an interview round. +- Pdf Reading View +- Text to Speech +- Add Book +- Delete Book +- Update Book +- User Management -## The Steps +App Interface: +1). Welcome Page : -Step 1: Use Get CLI [https://pub.dev/packages/get_cli] +![Welcome Page](https://github.com/user-attachments/assets/c6681fd9-1434-4933-ba60-43e5634a4414) -`get create project` +2). Home Page : -Step 2: Copy code from [https://github.com/jonataslaw/getx/tree/4.6.1/example_nav2/lib] +![HomePage](https://github.com/user-attachments/assets/cffd1e7f-6519-4828-aca9-e8b7ed6502a8) -Step 3: Integrate FlutterFire Authentication +3). Profile Page : -- Tutorials [https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#0] for inspiration -- Firebase Documentation [https://firebase.google.com/docs/auth/flutter/start] -- Blog [www.medium.com/TBD] -- To compile the code ensure that you generate your own firebase_options.dart by running +![ProfilePage](https://github.com/user-attachments/assets/b3f9b716-5524-4c50-9259-a8ed25a6ff38) - `flutterfire configure` +4). New Book Upload Page -Step 4: Add Google OAuth [https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#6]. Note ensure you do the steps for Android and iOS as the code for it is not in Github +![UploadBook](https://github.com/user-attachments/assets/d5e5dd20-97d6-4962-a3fe-a27d2de0440f) -Step 5: Add Guest User/Anonymous login with a Cart and Checkout use case [https://firebase.google.com/docs/auth/flutter/anonymous-auth] +5). Firebase Fingerprint ( SHA ) setup -* delete unlinked anonymous user post logout +![Firebase Fingerprint Setup](https://github.com/user-attachments/assets/c0eae085-f25a-4395-b479-f6803905bf33) -Step 6: Add ImagePicker and Firebase Storage for profile image +## Packages used + - cupertino_icons: ^1.0.8 + - get: ^4.6.6 + - flutter_svg: ^2.0.10+1 + - syncfusion_flutter_pdfviewer: ^26.2.11 + - lottie: ^3.1.2 + - firebase_core: ^2.16.0 + - google_sign_in: ^6.1.5 + - firebase_auth: ^4.10.0 + - fluttertoast: ^8.2.2 + - file_picker: ^5.5.0 + - cloud_firestore: ^4.9.2 + - firebase_storage: ^11.2.7 + - image_picker: ^1.0.4 + - uuid: ^3.0.7 + -* Create PopupMenu button for web [https://api.flutter.dev/flutter/material/PopupMenuButton-class.html] -* BottomSheet for phones and single file button for desktops -* GetX and Image Picker [https://stackoverflow.com/questions/66559553/flutter-imagepicker-with-getx] -* Add FilePicker [https://medium.com/@onuaugustine07/pick-any-file-file-picker-flutter-f82c0144e27c] -* Firebase Storage [https://mercyjemosop.medium.com/select-and-upload-images-to-firebase-storage-flutter-6fac855970a9] and [https://firebase.google.com/docs/storage/flutter/start] +## Colors Reference Are Used In this projects - Modify the Firebase Rules - `service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow write: if request.auth.uid != null; allow read: if true; } } }` +| Color | Hex | +| ----------------- | ------------------------------------------------------------------ | +| Background Color | ![#FFFFFF](https://via.placeholder.com/10/FFFFFF?text=+) #FFFFFF | +| Font Color | ![#000000](https://via.placeholder.com/10/000000?text=+) #000000 | +| Primary Color | ![#0057FF](https://via.placeholder.com/10/0057FF?text=+) #0057FF | +| Lebel Color | ![#6B6B6B](https://via.placeholder.com/10/6B6B6B?text=+) #6B6B6B | +| Secondry Color | ![#00C236](https://via.placeholder.com/10/00C236?text=+) #00C236 | - Fix CORS [https://stackoverflow.com/questions/37760695/firebase-storage-and-access-control-allow-origin] -* PList additions [https://medium.com/unitechie/flutter-tutorial-image-picker-from-camera-gallery-c27af5490b74] -Step 7: Additional Auth flow items -1. Add a Change Password Screen. The Flutter Fire package does not have this screen. -2. TODO: Add ReCaptcha to login flow for password authentication for Web only - * Phone Auth on Web has a ReCaptcha already [https://firebase.flutter.dev/docs/auth/phone/]. Tried to use that library but it is very cryptic. - * Use the following instead [https://stackoverflow.com/questions/60675575/how-to-implement-recaptcha-into-a-flutter-app] or [https://medium.com/cloudcraftz/securing-your-flutter-web-app-with-google-recaptcha-b556c567f409] or [https://pub.dev/packages/g_recaptcha_v3] -3. TODO: Ensure Reset Password has Email verification -4. TODO: Add Phone verification [https://firebase.google.com/docs/auth/flutter/phone-auth] - * See [https://github.com/firebase/flutterfire/issues/4189]. -5. TODO: Add 2FA with SMS Pin. This screen is available in the Flutter Fire package +Open project in the vs code -Step 8: Add Firebase Emulator to test on laptop instead of server so that we can use Functions without upgrading the plan to Blaze. See [https://firebase.google.com/docs/emulator-suite/install_and_configure] +```bash + flutter pub get +``` -Step 9: Add User Roles using Custom Claims. This requires upgrade of plan as we need to use Firebase Functions. Instead using Emulator. +run app -1. In Emulator we can add user via http://127.0.0.1:4000/auth and add custom claim via UI as {"role":"admin"}. The effect is shown via Product page in Nav instead of Cart page for admin user. -2. Add Function to add the custom claim to make the first user the admin using the Admin SDK -3. Registeration form to collect some data post signUp and enforce email verification from Client side. +```bash + flutter run +``` +_____________________________________________________________________________________________ +Email: smit.yenkar18@gmail.com, Mob No: 9822086647 - * Note! for Emulator check the console to verify using the link provided as email is not sent. -4. Enforcing verify email using a button which appears when SignIn fails due to non verification. +Final Year Btech - CSE ,MIT World Peace University,Pune - * Fixed the error handling message during login. - * Coverted server side to Typescript - * Enabled Resend verification mail button - * Approach 1 - Use Email Link Authentication and signIn, assuming it marks email as verified also. We cannot send the verification mail as is, since that can be sent only if signed in (which was allowed only for first login post signup) - * Refer https://firebase.google.com/docs/auth/flutter/email-link-auth - * TODO Enable Deep Linking: According to https://firebase.google.com/docs/dynamic-links/flutter/receive, the Flutter feature is being deprecated and we should use the AppLinks (Android), UniversalLinks(iOS) instead. Leaving this for future as adding complexity. - * We could use the server side handling instead of deep linking. See [https://firebase.google.com/docs/auth/custom-email-handler?hl=en&authuser=0#web]. However, this requires changing the email template for the URL which is not possible in Emulator. Using the continueURL instead does not work as oobCode is already expired. This handling also uses the web client sdk. Thus it is better to go with the below method instead. - * Approach 2 - (Hack) send a create request with suffix ".verify" added in email when button clicked. Use the server side beforeCreate to catch this and send verification mail - * Note that the Server side beforeCreate function can also bypass user creation till verification but the user record (esp password) needs to be stored anyways, so bypassing user creation is not a good idea. Instead, we should use the verified tag in subsequent processing - * Sending emails from server side is possible but by using the web client SDK. -5. TODO: Other Items - - * TODO: Using autocomplete for emails is throwing error log in terminal. No impact but need to fix when all is done. - * TODO: Add a job that removes all unverified users after a while automatically. This could be useful if you were victim of bot attacks, but adding the Recaptcha is better precaution. See [https://stackoverflow.com/questions/67148672/how-to-delete-unverified-e-mail-addresses-in-firebase-authentication-flutter/67150606#67150606] -6. Added Roles of Buyer and Seller. - - 1. Added Access level in increasing order of role order => Buyer then Seller then Admin - 2. Created Navigation for each of Admin, Buyer, Seller screens - 3. Allowed switch from lower role Navigation to Navigation view till the given role of the user - -Step 10: Firebase Remote Config for A/B testing. See [https://firebase.google.com/docs/remote-config] - -1. Complete the Screen enum based Navigation framework -2. Config useBottomSheetForProfileOptions for Navigation element to be one of the following - * False: Drawer for Account, Settings, Sign Out - * True: Hamburger that opens BottomSheet (Context Menu in larger screen) for the same options -3. TODO: Config for adding Search Bar at the Top vs a Bottom Navigation button - -Step 11: TODO: CRUD - -* Users request role upgrade -* Add this request data to Firebase Datastore -* Create ListView with slidable tiles for approvals -* Admin SDK used by admin user via workflow on this request data and is approved from app - * Allow a Plan attribute via Custome Claims (e.g. Premium user flag) for Buyer and Seller, to add features which are not Navigation linked. Add a button Upgrade to Plan in Drawer that leads to Payment screen. Also certain aspects of premium plan can be visible that leads to upgrade plan screen via middleware -* Nested Category, Sub-Category tree creation - -Step 12: TODO: Theming and Custom Settings - -* Add Persona (like that in Netflix) and create a Persona selection only for Buyer Role -* Add Minimal (Three Color Gradient Pallette) Material Theme. Align it with Persona Templates (like Kids Template in Netflix) -* Dark theme toggle setting based on each Persona of the logged in User - -Step 13: TODO: Large vs Small screen responsiveness - -* Drawer: Triggered by Top Left Icon (App Logo). For iOS this icon changes to back button when required. Contains allowed Role List, Screens specified as Drawer. Becomes Left Side Navigation for Horizontal Screens. Can have additional extreme left vertical Navigation Strip. Bottom Navigation Bar also folds into this strip in Horizontal Screens. -* Top Right Icon: used for Login and post Login triggers BottomSheet/Context Menu for Persona Change, Profile, Settings, Change Password, Logout -* Search Bar (Toggle Button for phones) on Top Center with Title -* Status Bottom Bar for desktops only instead of SnackBars -* FAB vs Main Menu - -Step 14: TODO: Make own login flow screens. Remove firebase library reference from all but auth_service diff --git a/SplaceController.dart b/SplaceController.dart new file mode 100644 index 00000000..adc9662a --- /dev/null +++ b/SplaceController.dart @@ -0,0 +1,16 @@ +import 'package:e_book_marketplace/Pages/WelcomePage.dart'; +import 'package:get/get.dart'; + +class SplaceController extends GetxController { + @override + void onInit() { + super.onInit(); + splaceController(); + } + + void splaceController() { + Future.delayed(Duration(seconds: 4), () { + Get.offAll(Welcomepage()); + }); + } +} diff --git a/WelcomePage.dart b/WelcomePage.dart new file mode 100644 index 00000000..da03dfdc --- /dev/null +++ b/WelcomePage.dart @@ -0,0 +1,95 @@ +import 'package:e_book_marketplace/Components/PrimaryButton.dart'; +//import 'package:e_book_marketplace/Controller/AuthController.dart'; +import 'package:e_book_marketplace/Pages/Homepage/HomePage.dart'; // check it once +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class Welcomepage extends StatelessWidget { + const Welcomepage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + Container( + height: 450, + padding: const EdgeInsets.all(20), + color: Theme.of(context).colorScheme.primary, + child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox(height: 50), + Image.asset( + "Assets/Images/book.png", + width: 380, + ), + const SizedBox(height: 60), + Text( + "E - Book Store", + style: + Theme.of(context).textTheme.headlineLarge?.copyWith( + color: Theme.of(context).colorScheme.surface, + ), + ), + const SizedBox(height: 10), + Flexible( + child: Text( + "Here, you can find the perfect book for you and easily enjoy reading or listening to it", + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.labelSmall?.copyWith( + color: Theme.of(context).colorScheme.surface, + ), + ), + ), + ], + ), + ) + ]), + ), + Padding( + padding: const EdgeInsets.all(10), + child: Column( + children: [ + const SizedBox(height: 30), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Disclaimer", + style: Theme.of(context).textTheme.labelMedium, + ), + ], + ), + const SizedBox(height: 10), + Row( + children: [ + Flexible( + child: Text( + "By using E - Book Store, you acknowledge that eBooks are for personal use and may be subject to copyright laws. We ensure data security but disclaim responsibility for content accuracy or legality", + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.labelSmall, + ), + ), + ], + ), + ], + ), + ), + const Spacer(), + Padding( + padding: const EdgeInsets.all(10), + child: PrimaryButton( + btnName: "CONTINUE", + ontap: () { + Get.offAll(HomePage()); + }, + ), + ) + ], + ), + ); + } +} diff --git a/analysis_options.yaml b/analysis_options.yaml index 72b295f6..00766420 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,7 +1,28 @@ -analyzer: - errors: - constant_identifier_names: ignore -include: package:flutter_lints/flutter.yaml -linter: - rules: - +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +#include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/assets/icons/logo.png b/assets/icons/logo.png deleted file mode 100644 index 77ffea42..00000000 Binary files a/assets/icons/logo.png and /dev/null differ diff --git a/assets/images/dash.png b/assets/images/dash.png deleted file mode 100644 index 6ccb3f39..00000000 Binary files a/assets/images/dash.png and /dev/null differ diff --git a/assets/images/flutterfire_300x.png b/assets/images/flutterfire_300x.png deleted file mode 100644 index 604593b8..00000000 Binary files a/assets/images/flutterfire_300x.png and /dev/null differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..401314dc --- /dev/null +++ b/build.gradle @@ -0,0 +1,70 @@ +plugins { + id "com.android.application" + // START: FlutterFire Configuration + id 'com.google.gms.google-services' + // END: FlutterFire Configuration + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +android { + namespace "com.example.e_book" + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.e_book" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + 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 + } + } +} + +flutter { + source '../..' +} + +dependencies {} diff --git a/e_book_marketplace.iml b/e_book_marketplace.iml new file mode 100644 index 00000000..4a179b7d --- /dev/null +++ b/e_book_marketplace.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/firebase.json b/firebase.json new file mode 100644 index 00000000..f36359fe --- /dev/null +++ b/firebase.json @@ -0,0 +1 @@ +{"flutter":{"platforms":{"android":{"default":{"projectId":"e-book-store-4c946","appId":"1:634063692566:android:6fe86f8c933233353e6637","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"e-book-store-4c946","configurations":{"android":"1:634063692566:android:6fe86f8c933233353e6637","ios":"1:634063692566:ios:e53806c1a55a67e23e6637","macos":"1:634063692566:ios:e53806c1a55a67e23e6637","web":"1:634063692566:web:32810b1fecd926ba3e6637","windows":"1:634063692566:web:aa79e419505351bc3e6637"}}}}}} \ No newline at end of file diff --git a/firebase_options.dart b/firebase_options.dart new file mode 100644 index 00000000..56cb7119 --- /dev/null +++ b/firebase_options.dart @@ -0,0 +1,86 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + return web; + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + return macos; + case TargetPlatform.windows: + return windows; + 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.', + ); + } + } + + static const FirebaseOptions web = FirebaseOptions( + apiKey: 'AIzaSyA_s78W0VaKQgKWUJ3MDFjq-GdHjWImQTU', + appId: '1:634063692566:web:32810b1fecd926ba3e6637', + messagingSenderId: '634063692566', + projectId: 'e-book-store-4c946', + authDomain: 'e-book-store-4c946.firebaseapp.com', + storageBucket: 'e-book-store-4c946.appspot.com', + ); + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyCUjblSpn3WICIeGKSNKY_rYsMou6Vk60Y', + appId: '1:634063692566:android:6fe86f8c933233353e6637', + messagingSenderId: '634063692566', + projectId: 'e-book-store-4c946', + storageBucket: 'e-book-store-4c946.appspot.com', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyAJKX6nfjzg2nqTbc63JW60xnIObyIkpLs', + appId: '1:634063692566:ios:e53806c1a55a67e23e6637', + messagingSenderId: '634063692566', + projectId: 'e-book-store-4c946', + storageBucket: 'e-book-store-4c946.appspot.com', + iosBundleId: 'com.example.eBookMarketplace', + ); + + static const FirebaseOptions macos = FirebaseOptions( + apiKey: 'AIzaSyAJKX6nfjzg2nqTbc63JW60xnIObyIkpLs', + appId: '1:634063692566:ios:e53806c1a55a67e23e6637', + messagingSenderId: '634063692566', + projectId: 'e-book-store-4c946', + storageBucket: 'e-book-store-4c946.appspot.com', + iosBundleId: 'com.example.eBookMarketplace', + ); + + static const FirebaseOptions windows = FirebaseOptions( + apiKey: 'AIzaSyA_s78W0VaKQgKWUJ3MDFjq-GdHjWImQTU', + appId: '1:634063692566:web:aa79e419505351bc3e6637', + messagingSenderId: '634063692566', + projectId: 'e-book-store-4c946', + authDomain: 'e-book-store-4c946.firebaseapp.com', + storageBucket: 'e-book-store-4c946.appspot.com', + ); +} diff --git a/flutter b/flutter new file mode 100644 index 00000000..e69de29b diff --git a/flutter_01.log b/flutter_01.log new file mode 100644 index 00000000..c31ae377 --- /dev/null +++ b/flutter_01.log @@ -0,0 +1,71 @@ +Flutter crash report. +Please report a bug at https://github.com/flutter/flutter/issues. + +## command + +flutter run + +## exception + +RPCError: getVM: (-32000) Service connection disposed + +``` +``` + +## flutter doctor + +``` +[✓] Flutter (Channel stable, 3.24.0, on Microsoft Windows [Version + 10.0.22631.4037], locale en-IN) + • Flutter version 3.24.0 on channel stable at C:\flutter + • Upstream repository https://github.com/flutter/flutter.git + • Framework revision 80c2e84975 (4 weeks ago), 2024-07-30 23:06:49 +0700 + • Engine revision b8800d88be + • Dart version 3.5.0 + • DevTools version 2.37.2 + +[✓] Windows Version (Installed version of Windows is version 10 or higher) + +[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0) + • Android SDK at C:\Users\SMIT YENKAR\AppData\Local\Android\sdk + • Platform android-35, build-tools 35.0.0 + • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java + • Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314) + • All Android licenses accepted. + +[✓] Chrome - develop for the web + • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe + +[✓] Visual Studio - develop Windows apps (Visual Studio Build Tools 2019 16.11.38) + • Visual Studio at C:\Program Files (x86)\Microsoft Visual + Studio\2019\BuildTools + • Visual Studio Build Tools 2019 version 16.11.35026.282 + • Windows 10 SDK version 10.0.19041.0 + +[✓] Android Studio (version 2024.1) + • Android Studio at C:\Program Files\Android\Android Studio + • Flutter plugin can be installed from: + 🔨 https://plugins.jetbrains.com/plugin/9212-flutter + • Dart plugin can be installed from: + 🔨 https://plugins.jetbrains.com/plugin/6351-dart + • Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314) + +[✓] VS Code (version 1.92.2) + • VS Code at C:\Users\SMIT YENKAR\AppData\Local\Programs\Microsoft VS Code + • Flutter extension version 3.95.20240801 + +[✓] Connected device (4 available) + • sdk gphone16k x86 64 (mobile) • emulator-5554 • android-x64 • Android 15 + (API 35) (emulator) + • Windows (desktop) • windows • windows-x64 • Microsoft + Windows [Version 10.0.22631.4037] + • Chrome (web) • chrome • web-javascript • Google + Chrome 128.0.6613.84 + • Edge (web) • edge • web-javascript • Microsoft + Edge 128.0.2739.42 + +[✓] Network resources + • All expected network resources are available. + +• No issues found! +``` diff --git a/google-services.json b/google-services.json new file mode 100644 index 00000000..76b6f516 --- /dev/null +++ b/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "745546316978", + "project_id": "book-8ae0e", + "storage_bucket": "book-8ae0e.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:745546316978:android:40683bd9b62405b3151dab", + "android_client_info": { + "package_name": "com.example.e_book" + } + }, + "oauth_client": [ + { + "client_id": "745546316978-kqq7kv82mphelaoiaqk5chignqtp3bh1.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBDm4MCWqNdP5Q7EMBRtuQZ2uMMdAJtgfY" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "745546316978-kqq7kv82mphelaoiaqk5chignqtp3bh1.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 7c569640..00000000 --- a/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 12.0 - - diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist deleted file mode 100644 index fc7f1dd4..00000000 --- a/ios/Runner/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Get Flutter Fire - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - get_flutter_fire - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - NSCameraUsageDescription - Allow access to camera - NSMicrophoneUsageDescription - Allow access to microphone for video recording - NSPhotoLibraryUsageDescription - Allow access to photo library - - diff --git a/pubspec.lock b/pubspec.lock index 877fc75e..5b2946a5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,18 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" + sha256: f5628cd9c92ed11083f425fd1f8f1bc60ecdda458c81d73b143aeda036c35fe7 url: "https://pub.dev" source: hosted - version: "1.3.35" + version: "1.3.16" + archive: + dependency: transitive + description: + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" + source: hosted + version: "3.6.1" args: dependency: transitive description: @@ -57,22 +65,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - cross_file: + convert: dependency: transitive description: - name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" url: "https://pub.dev" source: hosted - version: "0.3.4+1" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" cupertino_icons: dependency: "direct main" description: @@ -81,22 +89,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" - desktop_webview_auth: + device_info_plus: dependency: transitive description: - name: desktop_webview_auth - sha256: c4dce73346a7be7243c90ac3b1a68586d9f0e2c2710e81e07d758e80a6ebd920 + name: device_info_plus + sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 url: "https://pub.dev" source: hosted - version: "0.0.15" - email_validator: + version: "10.1.2" + device_info_plus_platform_interface: dependency: transitive description: - name: email_validator - sha256: e9a90f27ab2b915a27d7f9c2a7ddda5dd752d6942616ee83529b686fc086221b + name: device_info_plus_platform_interface + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" url: "https://pub.dev" source: hosted - version: "2.1.17" + version: "7.0.1" fake_async: dependency: transitive description: @@ -109,226 +117,74 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: "29c90806ac5f5fb896547720b73b17ee9aed9bba540dc5d91fe29f8c5745b10a" - url: "https://pub.dev" - source: hosted - version: "8.0.3" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" - url: "https://pub.dev" - source: hosted - 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_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 - url: "https://pub.dev" - source: hosted - version: "10.10.7" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "3.10.8" - firebase_analytics_web: + version: "2.1.3" + file: dependency: transitive description: - name: firebase_analytics_web - sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "0.5.7+7" + version: "7.0.0" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: f0a75f61992d036e4c46ad0e9febd364d98aa2c092690a5475cb1421a8243cfe + sha256: "279b2773ff61afd9763202cb5582e2b995ee57419d826b9af6517302a59b672f" url: "https://pub.dev" source: hosted - version: "4.19.5" + version: "4.16.0" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: feb77258404309ffc7761c78e1c0ad2ed5e4fdc378e035619e2cc13be4397b62 + sha256: "3c9cfaccb7549492edf5b0c67c6dd1c6727c7830891aa6727f2fb225f0226626" url: "https://pub.dev" source: hosted - version: "7.2.6" + version: "7.0.9" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "6d527f357da2bf93a67a42b423aa92943104a0c290d1d72ad9a42c779d501cd2" + sha256: c7b1379ccef7abf4b6816eede67a868c44142198e42350f51c01d8fc03f95a7d url: "https://pub.dev" source: hosted - version: "5.11.5" + version: "5.8.13" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" + sha256: "96607c0e829a581c2a483c658f04e8b159964c3bae2730f73297070bc85d40bb" url: "https://pub.dev" source: hosted - version: "2.32.0" + version: "2.24.2" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 + sha256: f7d7180c7f99babd4b4c517754d41a09a4943a0f7a69b65c894ca5c68ba66315 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.2.1" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" - url: "https://pub.dev" - source: hosted - version: "2.17.0" - firebase_dynamic_links: - dependency: transitive - description: - name: firebase_dynamic_links - sha256: f704859abc17d99e74b47eaf47455b45a88ab7e2973f03e6130ff666b45fe11f - url: "https://pub.dev" - source: hosted - version: "5.5.5" - firebase_dynamic_links_platform_interface: - dependency: transitive - description: - name: firebase_dynamic_links_platform_interface - sha256: f86992605b50e2f0ce6c24993430affc98021da8d8a74d5596b7a2c84196c110 - url: "https://pub.dev" - source: hosted - version: "0.2.6+33" - firebase_remote_config: - dependency: "direct main" - description: - name: firebase_remote_config - sha256: "653bd94b68e2c4e89eca10db90576101f1024151f39f2d4e7c64ae6a90a5f9c5" - url: "https://pub.dev" - source: hosted - version: "4.4.7" - firebase_remote_config_platform_interface: - dependency: transitive - description: - name: firebase_remote_config_platform_interface - sha256: "24a2c445b15de3af7e4582ebceb2aa9a1e3731d0202cb3e7a1e03012440fa07d" - url: "https://pub.dev" - source: hosted - version: "1.4.35" - firebase_remote_config_web: - dependency: transitive - description: - name: firebase_remote_config_web - sha256: "525aa3000fd27cd023841c802010a06515e564aab2f147aa964b35f54abbf449" - url: "https://pub.dev" - source: hosted - version: "1.6.7" - firebase_storage: - dependency: "direct main" - description: - name: firebase_storage - sha256: da76ca9c11d795c4bae1bd13b31d54bb9eb9ccbee7eb5f6b86b8294370e9d488 - url: "https://pub.dev" - source: hosted - version: "11.7.5" - firebase_storage_platform_interface: - dependency: transitive - description: - name: firebase_storage_platform_interface - sha256: be17bfa9110a6429b40dd3760c755034079fd734aa1dd2476d5638ab780cc508 - url: "https://pub.dev" - source: hosted - version: "5.1.20" - firebase_storage_web: - dependency: transitive - description: - name: firebase_storage_web - sha256: "5219c20c0768a8e2ffedf0a116b7bc80ab32fcc6e2cbd50cbde14f8c4575c3f4" - url: "https://pub.dev" - source: hosted - version: "3.9.5" - firebase_ui_auth: - dependency: "direct main" - description: - name: firebase_ui_auth - sha256: "62c3ce9c8da134e0780bf8ed7d7ed91dd2308596ee3cb56fab03eb79f8323479" - url: "https://pub.dev" - source: hosted - version: "1.14.0" - firebase_ui_localizations: - dependency: "direct main" - description: - name: firebase_ui_localizations - sha256: a7faa62e2d56cb38aae270a8f05c1a8518b04b06dd0f0cc2d4974e4b4782de1c - url: "https://pub.dev" - source: hosted - version: "1.12.0" - firebase_ui_oauth: - dependency: transitive - description: - name: firebase_ui_oauth - sha256: b86458b7d403d48d335c2502004bf88f2145d2f0be58b29fba8de28944f7fa91 - url: "https://pub.dev" - source: hosted - version: "1.5.2" - firebase_ui_oauth_google: - dependency: "direct main" - description: - name: firebase_ui_oauth_google - sha256: "101c13ba7ac04f6b70e1d73ab6d063b82801b794394914655356eb2a6f18bbcb" + sha256: d585bdf3c656c3f7821ba1bd44da5f13365d22fcecaf5eb75c4295246aaa83c0 url: "https://pub.dev" source: hosted - version: "1.3.2" - firebase_ui_shared: + version: "2.10.0" + fixnum: dependency: transitive description: - name: firebase_ui_shared - sha256: f1d07c130a39104d32fba1dab274b7bcb13be2bf4e652624a4ccabb58f9781f1 + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -338,25 +194,12 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - flutter_localizations: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.19" + version: "4.0.0" flutter_svg: - dependency: transitive + dependency: "direct main" description: name: flutter_svg sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" @@ -381,30 +224,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.6.6" - get_storage: - dependency: "direct main" - description: - name: get_storage - sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - google_fonts: - dependency: "direct main" - description: - name: google_fonts - sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 - url: "https://pub.dev" - source: hosted - version: "6.2.1" google_identity_services_web: dependency: transitive description: name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6" url: "https://pub.dev" source: hosted - version: "0.3.1+1" + version: "0.3.1+4" google_sign_in: dependency: "direct main" description: @@ -417,18 +244,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" + sha256: "5a47ebec9af97daf0822e800e4f101c3340b5ebc3f6898cf860c1a71b53cf077" url: "https://pub.dev" source: hosted - version: "6.1.23" + version: "6.1.28" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + sha256: "4898410f55440049e1ba8f15411612d9f89299d89c61cd9baf7e02d56ff81ac7" url: "https://pub.dev" source: hosted - version: "5.7.6" + version: "5.7.7" google_sign_in_platform_interface: dependency: transitive description: @@ -441,18 +268,18 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd + sha256: "042805a21127a85b0dc46bba98a37926f17d2439720e8a459d27045d8ef68055" url: "https://pub.dev" source: hosted - version: "0.12.4" + version: "0.12.4+2" http: dependency: transitive description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: @@ -461,70 +288,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "79455f6cff4cbef583b2b524bbf0d4ec424e5959f4d464e36ef5323715b98370" - url: "https://pub.dev" - source: hosted - version: "0.8.12" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" - url: "https://pub.dev" - source: hosted - version: "3.0.4" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: cb0db0ec0d3e2cd49674f2e6053be25ccdb959832607c1cbd215dd6cf10fb0dd - url: "https://pub.dev" - source: hosted - version: "0.8.11" - 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 - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" intl: dependency: transitive description: @@ -533,22 +296,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.19.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -561,10 +332,18 @@ packages: dependency: transitive description: name: lints - sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + lottie: + dependency: "direct main" + description: + name: lottie + sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.2" matcher: dependency: transitive description: @@ -577,28 +356,20 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" - url: "https://pub.dev" - source: hosted - version: "1.12.0" - mime: - dependency: transitive - description: - name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.15.0" path: - dependency: "direct main" + dependency: transitive description: name: path sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" @@ -613,54 +384,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - path_provider: - dependency: transitive - description: - name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 - url: "https://pub.dev" - source: hosted - version: "2.1.3" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d - url: "https://pub.dev" - source: hosted - version: "2.2.4" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 - url: "https://pub.dev" - source: hosted - version: "2.4.0" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" - source: hosted - version: "2.2.1" petitparser: dependency: transitive description: @@ -669,14 +392,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.2" - platform: - dependency: transitive - description: - name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" - url: "https://pub.dev" - source: hosted - version: "3.1.4" plugin_platform_interface: dependency: transitive description: @@ -698,6 +413,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" stack_trace: dependency: transitive description: @@ -722,6 +445,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + syncfusion_flutter_core: + dependency: transitive + description: + name: syncfusion_flutter_core + sha256: "85f96b7b06f32a60b19ab0bb8c32bf162a0474f2d94f4844384be1118e6b4954" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_flutter_pdf: + dependency: transitive + description: + name: syncfusion_flutter_pdf + sha256: "0bf5986a8ea7afc54d5712c54f1aba8530be0920872c9dbbe5e0c4369d51eef8" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_flutter_pdfviewer: + dependency: "direct main" + description: + name: syncfusion_flutter_pdfviewer + sha256: "25ca744376c5dafe2e3e5c7718ccb7377a21ddbba00c0d6524801c6ed634c493" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_flutter_signaturepad: + dependency: transitive + description: + name: syncfusion_flutter_signaturepad + sha256: "54545a6611ec8f4b975269f5fd1e7c996172d41398745363542d1307d2976884" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_pdfviewer_macos: + dependency: transitive + description: + name: syncfusion_pdfviewer_macos + sha256: "5731a1ea92455b8322a647387f27c2e7f52b963dff3983b8207233ecc6ef7ba7" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_pdfviewer_platform_interface: + dependency: transitive + description: + name: syncfusion_pdfviewer_platform_interface + sha256: f266aa4657b511201666f394b74c71ecfeaafa2717e4e75e73585a55d99d350d + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_pdfviewer_web: + dependency: transitive + description: + name: syncfusion_pdfviewer_web + sha256: "7a3da6586668b851b74ab1bda09d313a54250fb0f74daaadda7133ca3591b235" + url: "https://pub.dev" + source: hosted + version: "26.2.11" + syncfusion_pdfviewer_windows: + dependency: transitive + description: + name: syncfusion_pdfviewer_windows + sha256: "670ac5e4158ba5060fbb26e2a5a04f6d7272eb9f4948d470634a0dbf33e423b2" + url: "https://pub.dev" + source: hosted + version: "26.2.11" term_glyph: dependency: transitive description: @@ -734,10 +521,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" typed_data: dependency: transitive description: @@ -746,6 +533,78 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" + url_launcher: + dependency: transitive + description: + name: url_launcher + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab + url: "https://pub.dev" + source: hosted + version: "6.3.10" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + url: "https://pub.dev" + source: hosted + version: "6.3.1" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af + url: "https://pub.dev" + source: hosted + version: "3.2.0" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + url: "https://pub.dev" + source: hosted + version: "2.3.3" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + uuid: + dependency: transitive + description: + name: uuid + sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + url: "https://pub.dev" + source: hosted + version: "4.4.2" vector_graphics: dependency: transitive description: @@ -782,34 +641,34 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.4" web: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.0.0" win32: dependency: transitive description: name: win32 - sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" url: "https://pub.dev" source: hosted - version: "5.5.0" - xdg_directories: + version: "5.5.4" + win32_registry: dependency: transitive description: - name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + name: win32_registry + sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.4" xml: dependency: transitive description: @@ -819,5 +678,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.3.4 <4.0.0" - flutter: ">=3.19.2" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml deleted file mode 100644 index 2909a374..00000000 --- a/pubspec.yaml +++ /dev/null @@ -1,43 +0,0 @@ -name: get_flutter_fire -version: 1.0.0+1 -publish_to: none -description: Boilerplate for Flutter with GetX, showing sample utilization of Firebase capabilities -environment: - sdk: '>=3.3.4 <4.0.0' - -dependencies: - cupertino_icons: ^1.0.6 - get: 4.6.6 - flutter: - sdk: flutter - firebase_core: ^2.31.0 - firebase_ui_auth: ^1.14.0 - firebase_auth: ^4.19.5 - google_sign_in: ^6.2.1 - firebase_ui_oauth_google: ^1.3.2 - google_fonts: ^6.2.1 - firebase_storage: ^11.7.5 - image_picker: ^1.1.1 - file_picker: ^8.0.3 - path: ^1.9.0 - get_storage: ^2.1.1 - firebase_ui_localizations: ^1.12.0 - firebase_remote_config: ^4.4.7 - firebase_analytics: ^10.10.7 - -dev_dependencies: - flutter_lints: 3.0.2 - flutter_test: - sdk: flutter - -flutter: - fonts: - - family: SocialIcons - fonts: - - asset: packages/firebase_ui_auth/fonts/SocialIcons.ttf - assets: - - assets/images/flutterfire_300x.png - - assets/images/dash.png - - assets/icons/logo.png - uses-material-design: true -