diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 5806f8f..5833be8 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,8 +1,9 @@ plugins { id("com.android.application") id("kotlin-android") - // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") + // اضافه کردن پلاگin گوگل سرویسز برای فایربیس + id("com.google.gms.google-services") } android { @@ -11,19 +12,20 @@ android { ndkVersion = flutter.ndkVersion compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + // فلاتر به صورت پیش‌فرض از جاوا ۸ استفاده می‌کند. + // اگر به صورت دستی به ۱۱ تغییر داده‌اید، مشکلی نیست. + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() + jvmTarget = "1.8" } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.lba" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. + // حداقل SDK برای کتابخانه‌های جدید فایربیس معمولاً ۲۱ است. + // ۲۴ که شما تنظیم کرده‌اید کاملاً مناسب است. minSdk = 24 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode @@ -32,11 +34,11 @@ android { 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.getByName("debug") - isMinifyEnabled = false - isShrinkResources = false + // این تنظیمات برای نسخه نهایی (release) مهم هستند + // اما برای تست می‌توانید آن‌ها را غیرفعال نگه دارید. + // isMinifyEnabled = true + // isShrinkResources = true // proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } @@ -45,3 +47,17 @@ android { flutter { source = "../.." } + +// اضافه کردن این بخش برای کتابخانه‌های فایربیس +dependencies { + // اضافه کردن Firebase Bill of Materials (BoM) + // این کار نسخه‌های تمام کتابخانه‌های فایربیس را مدیریت می‌کند + implementation(platform("com.google.firebase:firebase-bom:33.1.0")) + + // کتابخانه‌های مورد نیاز برای آنالیتیکس و احراز هویت + implementation("com.google.firebase:firebase-analytics") + implementation("com.google.firebase:firebase-auth") + + // کتابخانه مورد نیاز برای پکیج google_sign_in + implementation("com.google.android.gms:play-services-auth:21.2.0") +} \ No newline at end of file diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..0eab273 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "81202355575", + "project_id": "lba-app-c4a7e", + "storage_bucket": "lba-app-c4a7e.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:81202355575:android:6d4c7db49b6120f8239572", + "android_client_info": { + "package_name": "com.example.lba" + } + }, + "oauth_client": [ + { + "client_id": "81202355575-fchlrrp4fu3irskh6co1ep8i04oi3adr.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.example.lba", + "certificate_hash": "b64c77112af5000772d60fbe05138e873f6fc118" + } + }, + { + "client_id": "81202355575-toafncrkf106nnu2g7hmqh2gho491gjt.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyB22NqmwB_PpI1s37xbc2ABJ5_COEHeC8g" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "81202355575-toafncrkf106nnu2g7hmqh2gho491gjt.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 026f001..9dc4a88 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ + ("clean") { delete(rootProject.layout.buildDirectory) } + +plugins { + // The Flutter Gradle Plugin is managed by the Flutter SDK, so we don't specify a version. + id("dev.flutter.flutter-gradle-plugin") apply false + // The Android Gradle Plugin version is also managed, so we remove the explicit version. + id("com.android.application") apply false + // The Kotlin plugin version is also managed. + id("org.jetbrains.kotlin.android") apply false + // اضافه کردن این خط برای تعریف پلاگین گوگل سرویسز + id("com.google.gms.google-services") version "4.4.1" apply false +} diff --git a/android/gradle.properties b/android/gradle.properties index f018a61..0c1d39b 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true +org.gradle.java.home=D:/Program Files/Android/Android Studio/jbr \ No newline at end of file diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index a439442..5fc28b5 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -19,7 +19,8 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.7.0" apply false - id("org.jetbrains.kotlin.android") version "1.8.22" apply false + // Updated Kotlin version to the latest stable release + id("org.jetbrains.kotlin.android") version "2.0.0" apply false } -include(":app") +include(":app") \ No newline at end of file diff --git a/assets/icons/card.svg b/assets/icons/card.svg new file mode 100644 index 0000000..681275f --- /dev/null +++ b/assets/icons/card.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/lib/features/auth/presentation/bloc/auth_bloc.dart b/lib/features/auth/presentation/bloc/auth_bloc.dart index 43f5ec9..f0b6734 100644 --- a/lib/features/auth/presentation/bloc/auth_bloc.dart +++ b/lib/features/auth/presentation/bloc/auth_bloc.dart @@ -1,4 +1,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:firebase_auth/firebase_auth.dart'; import '../../domain/usecases/send_otp.dart'; import '../../domain/usecases/verify_otp.dart'; @@ -8,6 +10,7 @@ part 'auth_state.dart'; class AuthBloc extends Bloc { final SendOTP sendOTPUseCase; final VerifyOTP verifyOTPUseCase; + final FirebaseAuth _firebaseAuth = FirebaseAuth.instance; String _timeStamp = ""; String _timeDue = ""; @@ -21,13 +24,12 @@ class AuthBloc extends Bloc { }) : super(AuthInitial()) { on(_onSendOTP); on(_onVerifyOTP); + on(_onSignInWithGoogle); } Future _onSendOTP(SendOTPEvent event, Emitter emit) async { emit(AuthLoading()); - final result = await sendOTPUseCase(SendOTPParams(phoneNumber: event.phoneNumber)); - if (result.isSuccess && result.data != null) { _timeStamp = result.data!.timeStamp; _timeDue = result.data!.timeDue; @@ -37,22 +39,59 @@ class AuthBloc extends Bloc { timeDue: _timeDue, )); } else { - emit(AuthError('خطا در ارسال کد. لطفاً دوباره تلاش کنید.')); + emit(AuthError('Error sending code. Please try again.')); } } Future _onVerifyOTP(VerifyOTPEvent event, Emitter emit) async { emit(AuthLoading()); - final result = await verifyOTPUseCase(VerifyOTPParams( otpCode: event.otpCode, phoneNumber: event.phoneNumber, )); - if (result.isSuccess && result.data == true) { emit(OTPVerified()); } else { - emit(AuthError('کد وارد شده نادرست است. لطفاً دوباره تلاش کنید.')); + emit(AuthError('The code entered is incorrect. Please try again.')); } } -} + + Future _onSignInWithGoogle( + SignInWithGoogleEvent event, + Emitter emit, + ) async { + emit(AuthLoading()); + try { + final GoogleSignIn googleSignIn = GoogleSignIn( + scopes: ['email'], + ); + + final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); + + if (googleUser == null) { + emit(AuthInitial()); + return; + } + + final GoogleSignInAuthentication googleAuth = await googleUser.authentication; + + final credential = GoogleAuthProvider.credential( + accessToken: googleAuth.accessToken, + idToken: googleAuth.idToken, + ); + + final UserCredential userCredential = + await _firebaseAuth.signInWithCredential(credential); + + if (userCredential.user != null) { + emit(GoogleSignInSuccess()); + } else { + emit(AuthError("Error signing in with Google")); + } + + } catch (e) { + emit(AuthError("Error signing in with Google: ${e.toString()}")); + } + } + +} \ No newline at end of file diff --git a/lib/features/auth/presentation/bloc/auth_event.dart b/lib/features/auth/presentation/bloc/auth_event.dart index a3050bc..082f25c 100644 --- a/lib/features/auth/presentation/bloc/auth_event.dart +++ b/lib/features/auth/presentation/bloc/auth_event.dart @@ -17,3 +17,5 @@ class VerifyOTPEvent extends AuthEvent { required this.phoneNumber, }); } + +class SignInWithGoogleEvent extends AuthEvent {} \ No newline at end of file diff --git a/lib/features/auth/presentation/bloc/auth_state.dart b/lib/features/auth/presentation/bloc/auth_state.dart index e90b162..5792b44 100644 --- a/lib/features/auth/presentation/bloc/auth_state.dart +++ b/lib/features/auth/presentation/bloc/auth_state.dart @@ -1,4 +1,3 @@ -// lib/features/auth/presentation/bloc/auth_state.dart part of 'auth_bloc.dart'; abstract class AuthState {} @@ -9,9 +8,6 @@ class AuthLoading extends AuthState {} class AuthSuccess extends AuthState { final String phoneNumber; - // - // CHANGE: Made timeStamp and timeDue required. - // final String timeStamp; final String timeDue; @@ -28,4 +24,6 @@ class AuthError extends AuthState { AuthError(this.message); } -class OTPVerified extends AuthState {} \ No newline at end of file +class OTPVerified extends AuthState {} + +class GoogleSignInSuccess extends AuthState {} \ No newline at end of file diff --git a/lib/features/auth/presentation/pages/login_page.dart b/lib/features/auth/presentation/pages/login_page.dart index 5bbfe29..b995eba 100644 --- a/lib/features/auth/presentation/pages/login_page.dart +++ b/lib/features/auth/presentation/pages/login_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:country_pickers/country_pickers.dart'; +import 'package:lba/features/auth/presentation/pages/user_info_page.dart'; import '../../../../extension/screenSize.dart'; import '../../../../gen/assets.gen.dart'; import '../bloc/auth_bloc.dart'; @@ -167,6 +168,14 @@ class _LoginPageState extends State { ), ); } + if (state is GoogleSignInSuccess) { + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => const UserInfoPage(), + ), + ); + } if (state is AuthError) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -242,7 +251,9 @@ class _LoginPageState extends State { borderRadius: BorderRadius.circular(32), ), ), - onPressed: () {}, + onPressed: () { + context.read().add(SignInWithGoogleEvent()); + }, ), ), ], diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 57ee77c..0ed776d 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -1,3 +1,5 @@ +// dart format width=80 + /// GENERATED CODE - DO NOT MODIFY BY HAND /// ***************************************************** /// FlutterGen @@ -5,7 +7,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use +// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; @@ -93,6 +95,9 @@ class $AssetsIconsGen { /// File path: assets/icons/card-pos.svg SvgGenImage get cardPos => const SvgGenImage('assets/icons/card-pos.svg'); + /// File path: assets/icons/card.svg + SvgGenImage get card => const SvgGenImage('assets/icons/card.svg'); + /// File path: assets/icons/category-2.svg SvgGenImage get category2 => const SvgGenImage('assets/icons/category-2.svg'); @@ -367,6 +372,7 @@ class $AssetsIconsGen { camera2, cardAdd, cardPos, + card, category2, checkAlternative, clander, @@ -506,12 +512,18 @@ class Assets { } class AssetGenImage { - const AssetGenImage(this._assetName, {this.size, this.flavors = const {}}); + const AssetGenImage( + this._assetName, { + this.size, + this.flavors = const {}, + this.animation, + }); final String _assetName; final Size? size; final Set flavors; + final AssetGenImageAnimation? animation; Image image({ Key? key, @@ -575,6 +587,18 @@ class AssetGenImage { String get keyName => _assetName; } +class AssetGenImageAnimation { + const AssetGenImageAnimation({ + required this.isAnimation, + required this.duration, + required this.frames, + }); + + final bool isAnimation; + final Duration duration; + final int frames; +} + class SvgGenImage { const SvgGenImage(this._assetName, {this.size, this.flavors = const {}}) : _isVecFormat = false; @@ -601,6 +625,7 @@ class SvgGenImage { String? semanticsLabel, bool excludeFromSemantics = false, _svg.SvgTheme? theme, + _svg.ColorMapper? colorMapper, ColorFilter? colorFilter, Clip clipBehavior = Clip.hardEdge, @deprecated Color? color, @@ -620,6 +645,7 @@ class SvgGenImage { assetBundle: bundle, packageName: package, theme: theme, + colorMapper: colorMapper, ); } return _svg.SvgPicture( diff --git a/lib/gen/fonts.gen.dart b/lib/gen/fonts.gen.dart index 7298f8c..9962f14 100644 --- a/lib/gen/fonts.gen.dart +++ b/lib/gen/fonts.gen.dart @@ -1,3 +1,4 @@ +// dart format width=80 /// GENERATED CODE - DO NOT MODIFY BY HAND /// ***************************************************** /// FlutterGen @@ -5,7 +6,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use +// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import class FontFamily { FontFamily._(); diff --git a/lib/main.dart b/lib/main.dart index a8ddfcb..ccc51e1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,8 +5,11 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'features/auth/presentation/pages/onboarding_page.dart'; import 'widgets/animated_splash_screen.dart'; import 'injection_container.dart'; +import 'package:firebase_core/firebase_core.dart'; -void main() { +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(); sl.init(); runApp(const MyApp()); } diff --git a/lib/screens/mains/planner/planner.dart b/lib/screens/mains/planner/planner.dart index 579289e..5932ddb 100644 --- a/lib/screens/mains/planner/planner.dart +++ b/lib/screens/mains/planner/planner.dart @@ -11,6 +11,7 @@ import 'package:flutter_sound/flutter_sound.dart'; import 'package:audioplayers/audioplayers.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; +import 'package:vibration/vibration.dart'; class Planner extends StatefulWidget { const Planner({super.key}); @@ -236,11 +237,31 @@ class _PlannerState extends State with TickerProviderStateMixin { Future _startRecording() async { try { - HapticFeedback.mediumImpact(); + debugPrint('🎤 Starting recording...'); + + try { + debugPrint('📳 Attempting vibration...'); + + bool? hasVibrator = await Vibration.hasVibrator(); + debugPrint('🔍 Device has vibrator: $hasVibrator'); + + if (hasVibrator == true) { + await Vibration.vibrate(duration: 100); + debugPrint('✅ Vibration pattern done'); + } + + await HapticFeedback.heavyImpact(); + debugPrint('✅ Heavy impact done'); + + } catch (e) { + debugPrint('❌ Vibration error: $e'); + } final permission = await Permission.microphone.request(); + debugPrint('🎙️ Microphone permission status: $permission'); if (permission != PermissionStatus.granted) { + debugPrint('❌ Microphone permission denied'); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text( @@ -250,6 +271,7 @@ class _PlannerState extends State with TickerProviderStateMixin { } if (_audioRecorder == null) { + debugPrint('🔧 Initializing recorder...'); await _initRecorder(); } @@ -257,12 +279,14 @@ class _PlannerState extends State with TickerProviderStateMixin { await getApplicationDocumentsDirectory(); final String filePath = '${appDocumentsDir.path}/recording_${DateTime.now().millisecondsSinceEpoch}.aac'; + debugPrint('📁 Recording to: $filePath'); await _audioRecorder!.startRecorder( toFile: filePath, codec: Codec.aacADTS, ); + debugPrint('✅ Recording started successfully'); setState(() { _isRecording = true; _recordDuration = Duration.zero; @@ -270,22 +294,44 @@ class _PlannerState extends State with TickerProviderStateMixin { _startRecordTimer(); } catch (e) { - debugPrint('Error starting recording: $e'); + debugPrint('❌ Error starting recording: $e'); } } Future _stopRecording() async { try { - HapticFeedback.lightImpact(); + debugPrint('🛑 Stopping recording...'); + + try { + debugPrint('📳 Attempting stop vibration...'); + + bool? hasVibrator = await Vibration.hasVibrator(); + debugPrint('🔍 Device has vibrator: $hasVibrator'); + + if (hasVibrator == true) { + await Vibration.vibrate(duration: 50); + await Future.delayed(Duration(milliseconds: 100)); + await Vibration.vibrate(duration: 50); + debugPrint('✅ Double vibration done'); + } + + await HapticFeedback.lightImpact(); + debugPrint('✅ Light impact done'); + + } catch (e) { + debugPrint('❌ Stop vibration error: $e'); + } + _recordingTimer?.cancel(); final path = await _audioRecorder!.stopRecorder(); + debugPrint('✅ Recording stopped. Path: $path'); setState(() { _isRecording = false; _recordedAudioPath = path; }); } catch (e) { - debugPrint('Error stopping recording: $e'); + debugPrint('❌ Error stopping recording: $e'); } } @@ -1046,8 +1092,29 @@ class _PlannerState extends State with TickerProviderStateMixin { ), ), GestureDetector( - onLongPressStart: (_) => _startRecording(), - onLongPressEnd: (_) => _stopRecording(), + onLongPressStart: (_) { + debugPrint('🔴 Long press started'); + _startRecording(); + }, + onLongPressEnd: (_) { + debugPrint('🔴 Long press ended'); + _stopRecording(); + }, + onTap: () async { + debugPrint('👆 Mic tapped for test'); + try { + bool? hasVibrator = await Vibration.hasVibrator(); + debugPrint('🔍 Device vibration support: $hasVibrator'); + if (hasVibrator == true) { + await Vibration.vibrate(duration: 200); + debugPrint('✅ Test vibration completed'); + } + await HapticFeedback.heavyImpact(); + debugPrint('✅ Test haptic completed'); + } catch (e) { + debugPrint('❌ Test vibration error: $e'); + } + }, child: AnimatedBuilder( animation: _micPulseAnimation, builder: (context, child) { diff --git a/lib/widgets/add_card_bottom_sheet.dart b/lib/widgets/add_card_bottom_sheet.dart index 3b29f97..9cf4650 100644 --- a/lib/widgets/add_card_bottom_sheet.dart +++ b/lib/widgets/add_card_bottom_sheet.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:lba/res/colors.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:lba/gen/assets.gen.dart'; import 'package:lba/widgets/button.dart'; class AddCardBottomSheet extends StatefulWidget { @@ -26,7 +27,6 @@ class _AddCardBottomSheetState extends State { _cardNumberController.addListener(_validateCardNumber); _expiryDateController.addListener(_validateExpiryDate); - // Change border color on focus _cardNumberFocus.addListener(() { setState(() { _borderColor = _cardNumberFocus.hasFocus || _expiryDateFocus.hasFocus @@ -118,7 +118,7 @@ class _AddCardBottomSheetState extends State { style: TextStyle( fontSize: 22, fontWeight: FontWeight.bold, - color: Colors.black87, + color: Color.fromARGB(255, 85,84, 81), ), ), const SizedBox(height: 8), @@ -133,9 +133,9 @@ class _AddCardBottomSheetState extends State { ), child: Row( children: [ - const Padding( + Padding( padding: EdgeInsets.symmetric(horizontal: 12.0), - child: Icon(Icons.credit_card, color: Colors.grey), + child: SvgPicture.asset(Assets.icons.card.path, width: 24, height: 24), ), Expanded( child: TextFormField( diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index fd92eba..6dc6662 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,22 +6,32 @@ import FlutterMacOS import Foundation import audioplayers_darwin +import device_info_plus import file_selector_macos +import firebase_auth +import firebase_core import geolocator_apple +import google_sign_in_ios import location import maps_launcher import mobile_scanner +import package_info_plus import path_provider_foundation import shared_preferences_foundation import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) MapsLauncherPlugin.register(with: registry.registrar(forPlugin: "MapsLauncherPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) diff --git a/pubspec.lock b/pubspec.lock index ba89396..ece1664 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f + sha256: f0bb5d1648339c8308cc0b9838d8456b3cfe5c91f9dc1a735b4d003269e5da9a url: "https://pub.dev" source: hosted - version: "82.0.0" + version: "88.0.0" + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: bb84ee51e527053dd8e25ecc9f97a6abfdc19130fb4d883e4e8585e23e7e6dd8 + url: "https://pub.dev" + source: hosted + version: "1.3.60" analyzer: dependency: transitive description: name: analyzer - sha256: "13c1e6c6fd460522ea840abec3f677cc226f5fec7872c04ad7b425517ccf54f7" + sha256: "0b7b9c329d2879f8f05d6c05b32ee9ec025f39b077864bdb5ac9a7b63418a98f" url: "https://pub.dev" source: hosted - version: "7.4.4" + version: "8.1.1" archive: dependency: transitive description: @@ -117,18 +125,18 @@ packages: dependency: transitive description: name: build - sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 + sha256: "6439a9c71a4e6eca8d9490c1b380a25b02675aa688137dfbe66d2062884a23ac" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "3.0.2" build_config: dependency: transitive description: name: build_config - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" build_daemon: dependency: transitive description: @@ -141,26 +149,26 @@ packages: dependency: transitive description: name: build_resolvers - sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 + sha256: "2b21a125d66a86b9511cc3fb6c668c42e9a1185083922bf60e46d483a81a9712" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.0.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99" + sha256: fd3c09f4bbff7fa6e8d8ef688a0b2e8a6384e6483a25af0dac75fef362bcfe6f url: "https://pub.dev" source: hosted - version: "2.4.15" + version: "2.7.0" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" + sha256: ab27e46c8aa233e610cf6084ee6d8a22c6f873a0a9929241d8855b7a72978ae7 url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "9.3.0" built_collection: dependency: transitive description: @@ -173,10 +181,10 @@ packages: dependency: transitive description: name: built_value - sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4 + sha256: ba95c961bafcd8686d1cf63be864eb59447e795e124d98d6a27d91fcd13602fb url: "https://pub.dev" source: hosted - version: "8.9.5" + version: "8.11.1" characters: dependency: transitive description: @@ -273,14 +281,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + dart_polylabel2: + dependency: transitive + description: + name: dart_polylabel2 + sha256: "7eeab15ce72894e4bdba6a8765712231fc81be0bd95247de4ad9966abc57adc6" + url: "https://pub.dev" + source: hosted + version: "1.0.0" dart_style: dependency: transitive description: name: dart_style - sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac" + sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.2" dartx: dependency: transitive description: @@ -289,14 +305,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + dbus: + dependency: transitive + description: + name: dbus + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.dev" + source: hosted + version: "0.7.11" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" + url: "https://pub.dev" + source: hosted + version: "11.5.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + url: "https://pub.dev" + source: hosted + version: "7.0.3" dio: dependency: "direct main" description: name: dio - sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" + sha256: d90ee57923d1828ac14e492ca49440f65477f4bb1263575900be731a3dac66a9 url: "https://pub.dev" source: hosted - version: "5.8.0+1" + version: "5.9.0" dio_web_adapter: dependency: transitive description: @@ -369,6 +409,54 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.3+4" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + sha256: abd15b7287285390c4ac144fed7825a1877496366e0d15ffc0ddfa9774deb3f3 + url: "https://pub.dev" + source: hosted + version: "6.0.1" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + sha256: c1d8a2f40980fbae191598e80431dd1228ddaeba17f96f4fe14babab721bdf3d + url: "https://pub.dev" + source: hosted + version: "8.1.0" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + sha256: "337e01f3bb30de85b74634c33712c57f76cc15f7be9d35b24aab9e95e451a4e2" + url: "https://pub.dev" + source: hosted + version: "6.0.1" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + sha256: "6b343e6f7b72a4f32d7ce8df8c9a28d8f54b4ac20d7c6500f3e8b3969afca457" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "5dbc900677dcbe5873d22ad7fbd64b047750124f1f9b7ebe2a33b9ddccc838eb" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: "5d28b14dd32282fb7ce2b22b897362453755b6b8541d491127dc72b755bb7b16" + url: "https://pub.dev" + source: hosted + version: "3.0.0" fixnum: dependency: transitive description: @@ -386,26 +474,26 @@ packages: dependency: "direct main" description: name: flutter_bloc - sha256: "1046d719fbdf230330d3443187cc33cc11963d15c9089f6cc56faa42a4c5f0cc" + sha256: cf51747952201a455a1c840f8171d273be009b932c75093020f9af64f2123e38 url: "https://pub.dev" source: hosted - version: "9.1.0" + version: "9.1.1" flutter_gen_core: dependency: transitive description: name: flutter_gen_core - sha256: "3eaa2d3d8be58267ac4cd5e215ac965dd23cae0410dc073de2e82e227be32bfc" + sha256: eda54fdc5de08e7eeea663eb8442aafc8660b5a13fda4e0c9e572c64e50195fb url: "https://pub.dev" source: hosted - version: "5.10.0" + version: "5.11.0" flutter_gen_runner: dependency: "direct dev" description: name: flutter_gen_runner - sha256: e74b4ead01df3e8f02e73a26ca856759dbbe8cb3fd60941ba9f4005cd0cd19c9 + sha256: "669bf8b7a9b4acbdcb7fcc5e12bf638aca19acedf43341714cbca3bf3a219521" url: "https://pub.dev" source: hosted - version: "5.10.0" + version: "5.11.0" flutter_lints: dependency: "direct dev" description: @@ -418,10 +506,10 @@ packages: dependency: "direct main" description: name: flutter_map - sha256: f7d0379477274f323c3f3bc12d369a2b42eb86d1e7bd2970ae1ea3cff782449a + sha256: df33e784b09fae857c6261a5521dd42bd4d3342cb6200884bb70730638af5fd5 url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.2.1" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -458,10 +546,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1 + sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" flutter_test: dependency: "direct dev" description: flutter @@ -480,22 +568,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + geoclue: + dependency: transitive + description: + name: geoclue + sha256: c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f + url: "https://pub.dev" + source: hosted + version: "0.1.1" geolocator: dependency: "direct main" description: name: geolocator - sha256: e7ebfa04ce451daf39b5499108c973189a71a919aa53c1204effda1c5b93b822 + sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" url: "https://pub.dev" source: hosted - version: "14.0.0" + version: "14.0.2" geolocator_android: dependency: transitive description: name: geolocator_android - sha256: "114072db5d1dce0ec0b36af2697f55c133bc89a2c8dd513e137c0afe59696ed4" + sha256: "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a" url: "https://pub.dev" source: hosted - version: "5.0.1+1" + version: "5.0.2" geolocator_apple: dependency: transitive description: @@ -504,6 +600,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.13" + geolocator_linux: + dependency: transitive + description: + name: geolocator_linux + sha256: c4e966f0a7a87e70049eac7a2617f9e16fd4c585a26e4330bdfc3a71e6a721f3 + url: "https://pub.dev" + source: hosted + version: "0.2.3" geolocator_platform_interface: dependency: transitive description: @@ -536,6 +640,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" + url: "https://pub.dev" + source: hosted + version: "0.3.3+1" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a + url: "https://pub.dev" + source: hosted + version: "6.3.0" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: d5e23c56a4b84b6427552f1cf3f98f716db3b1d1a647f16b96dbb5b93afa2805 + url: "https://pub.dev" + source: hosted + version: "6.2.1" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: "102005f498ce18442e7158f6791033bbc15ad2dcc0afa4cf4752e2722a516c96" + url: "https://pub.dev" + source: hosted + version: "5.9.0" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "5f6f79cf139c197261adb6ac024577518ae48fdff8e53205c5373b5f6430a8aa" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" + url: "https://pub.dev" + source: hosted + version: "0.12.4+4" graphs: dependency: transitive description: @@ -544,6 +696,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + gsettings: + dependency: transitive + description: + name: gsettings + sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" + url: "https://pub.dev" + source: hosted + version: "0.2.8" hashcodes: dependency: transitive description: @@ -556,10 +716,10 @@ packages: dependency: transitive description: name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.5.0" http_multi_server: dependency: transitive description: @@ -576,6 +736,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + image: + dependency: transitive + description: + name: image + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + url: "https://pub.dev" + source: hosted + version: "4.5.4" image_picker: dependency: "direct main" description: @@ -644,10 +812,10 @@ packages: dependency: transitive description: name: image_size_getter - sha256: "9a299e3af2ebbcfd1baf21456c3c884037ff524316c97d8e56035ea8fdf35653" + sha256: "7c26937e0ae341ca558b7556591fd0cc456fcc454583b7cb665d2f03e93e590f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" intl: dependency: "direct main" description: @@ -664,14 +832,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - js: - dependency: transitive - description: - name: js - sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" - url: "https://pub.dev" - source: hosted - version: "0.7.2" json_annotation: dependency: transitive description: @@ -732,34 +892,34 @@ packages: dependency: "direct main" description: name: location - sha256: c2c4304071ec860525d5c50d142410072f8620c1d9f74874811af2e804e1a9c8 + sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.1" location_platform_interface: dependency: transitive description: name: location_platform_interface - sha256: a3404ea6d74e89b121630be62ed8edcc7b39fd108bd19805d0ae55c397135dd7 + sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.0.1" location_web: dependency: transitive description: name: location_web - sha256: "744bdff53dc455a2dc9a34474c49cde364d4fbef2aee009f8b0b4b68570c27a1" + sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.0.1" logger: dependency: transitive description: name: logger - sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1 + sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.1" logging: dependency: transitive description: @@ -840,6 +1000,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" + url: "https://pub.dev" + source: hosted + version: "8.3.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" + url: "https://pub.dev" + source: hosted + version: "3.2.1" path: dependency: transitive description: @@ -976,14 +1152,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" - polylabel: - dependency: transitive - description: - name: polylabel - sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b" - url: "https://pub.dev" - source: hosted - version: "1.0.1" pool: dependency: transitive description: @@ -996,10 +1164,10 @@ packages: dependency: transitive description: name: posix - sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62 + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.0.3" proj4dart: dependency: transitive description: @@ -1012,10 +1180,10 @@ packages: dependency: transitive description: name: provider - sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.1.5+1" pub_semver: dependency: transitive description: @@ -1044,10 +1212,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" + sha256: "5bcf0772a761b04f8c6bf814721713de6f3e5d9d89caf8d3fe031b02a342379e" url: "https://pub.dev" source: hosted - version: "2.4.10" + version: "2.4.11" shared_preferences_foundation: dependency: transitive description: @@ -1217,26 +1385,26 @@ packages: dependency: transitive description: name: url_launcher - sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + sha256: "0aedad096a85b49df2e4725fa32118f9fa580f3b14af7a2d2221896a02cd5656" url: "https://pub.dev" source: hosted - version: "6.3.16" + version: "6.3.17" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.3.4" url_launcher_linux: dependency: transitive description: @@ -1249,10 +1417,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.3" url_launcher_platform_interface: dependency: transitive description: @@ -1289,10 +1457,10 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de" + sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 url: "https://pub.dev" source: hosted - version: "1.1.18" + version: "1.1.19" vector_graphics_codec: dependency: transitive description: @@ -1305,10 +1473,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + sha256: ca81fdfaf62a5ab45d7296614aea108d2c7d0efca8393e96174bf4d51e6725b0 url: "https://pub.dev" source: hosted - version: "1.1.16" + version: "1.1.18" vector_math: dependency: transitive description: @@ -1317,6 +1485,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vibration: + dependency: "direct main" + description: + name: vibration + sha256: "3b08a0579c2f9c18d5d78cb5c74f1005f731e02eeca6d72561a2e8059bf98ec3" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + vibration_platform_interface: + dependency: transitive + description: + name: vibration_platform_interface + sha256: "6ffeee63547562a6fef53c05a41d4fdcae2c0595b83ef59a4813b0612cd2bc36" + url: "https://pub.dev" + source: hosted + version: "0.0.3" vm_service: dependency: transitive description: @@ -1329,10 +1513,10 @@ packages: dependency: transitive description: name: watcher - sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" web: dependency: transitive description: @@ -1345,10 +1529,10 @@ packages: dependency: transitive description: name: web_socket - sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -1357,6 +1541,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + win32: + dependency: transitive + description: + name: win32 + sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" + url: "https://pub.dev" + source: hosted + version: "5.13.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" + url: "https://pub.dev" + source: hosted + version: "2.1.0" wkt_parser: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d89b3c2..3264e71 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,6 +54,10 @@ dependencies: flutter_sound: ^9.8.4 audioplayers: ^6.1.0 path_provider: ^2.1.4 + vibration: ^2.0.0 + firebase_auth: ^6.0.1 + google_sign_in: ^6.1.6 + firebase_core: ^4.0.0 # geocoding: ^3.0.0 dev_dependencies: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 618d94b..2d0d54d 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,8 @@ #include #include +#include +#include #include #include #include @@ -18,6 +20,10 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseAuthPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); GeolocatorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("GeolocatorWindows")); MapsLauncherPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 5fd938b..ecc2cf2 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,8 @@ list(APPEND FLUTTER_PLUGIN_LIST audioplayers_windows file_selector_windows + firebase_auth + firebase_core geolocator_windows maps_launcher permission_handler_windows