From 7262ae8eb5aa44f1e3a9609c42b828dc16f307ae Mon Sep 17 00:00:00 2001 From: OkaykOrhmn Date: Sun, 30 Jun 2024 09:36:49 +0330 Subject: [PATCH] notif fix -- rhmn --- android/app/src/main/AndroidManifest.xml | 1 + lib/main.dart | 57 +++++-- lib/services/app_initalizer.dart | 6 + lib/services/media/media.dart | 8 +- .../awsome/awsome_notification_handler.dart | 11 +- .../studio_details/studio_details_state.dart | 145 +++++++++--------- lib/views/profile/profile.dart | 4 +- lib/views/widgets/didvan/bnb.dart | 11 +- lib/views/widgets/didvan/scaffold.dart | 11 ++ pubspec.lock | 116 +++++++------- pubspec.yaml | 2 +- 11 files changed, 224 insertions(+), 148 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index af5a512..66ac4b8 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + diff --git a/lib/main.dart b/lib/main.dart index a0168c2..8557d68 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:android_intent_plus/android_intent.dart'; import 'package:bot_toast/bot_toast.dart'; import 'package:didvan/config/theme_data.dart'; @@ -9,10 +11,13 @@ import 'package:didvan/routes/route_generator.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/services/app_home_widget/home_widget_repository.dart'; import 'package:didvan/services/app_initalizer.dart'; +import 'package:didvan/services/media/media.dart'; import 'package:didvan/services/notification/awsome/awsome_notification_handler.dart'; import 'package:didvan/views/podcasts/podcasts_state.dart'; import 'package:didvan/views/podcasts/studio_details/studio_details_state.dart'; +import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:home_widget/home_widget.dart'; @@ -23,10 +28,40 @@ final GlobalKey navigatorKey = GlobalKey(); @pragma('vm:entry-point') Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { WidgetsFlutterBinding.ensureInitialized(); - await AppInitializer.initializeFirebase(); - await AwsomeNotificationHandler.startListeningNotificationEvents(); - await AwsomeNotificationHandler().show(message); - + await Firebase.initializeApp( + options: kIsWeb + ? const FirebaseOptions( + apiKey: "AIzaSyA0HZjKpRuPOi1SC3f_EZTvlS3mcj9UVo0", + authDomain: "didvan-9b7da.firebaseapp.com", + projectId: "didvan-9b7da", + storageBucket: "didvan-9b7da.appspot.com", + messagingSenderId: "935017686266", + appId: "1:935017686266:web:a93f7a19bed23c51d2d543", + measurementId: "G-80B4H9E8Y0") + : Platform.isAndroid + ? const FirebaseOptions( + apiKey: 'AIzaSyBp-UHjWeM0H0UHtX5yguFKG-riMzvvCzw', + appId: '1:935017686266:android:f9cbc9aba8e3d65ed2d543', + messagingSenderId: '935017686266', + projectId: 'didvan-9b7da', + ) + : const FirebaseOptions( + apiKey: 'AIzaSyCMa-zg_uVhOfTnea5Klz6aPZlgHwVGj7U', + appId: '1:935017686266:ios:de47638bd662463fd2d543', + messagingSenderId: '935017686266', + projectId: 'didvan-9b7da', + // iosBundleId: "com.didvan.didvanapp", + // storageBucket: "didvan-9b7da.appspot.com", + // iosClientId: + // "935017686266-54hu01v9cc5pqpgofo1gk2n3hegj4r2m.apps.googleusercontent.com" + ), + ); + print("background: ${NotificationMessage.fromJson(message.data).toJson()}"); + try { + await AwsomeNotificationHandler().show(message); + } catch (e) { + rethrow; + } return; } @@ -43,18 +78,21 @@ Future _backgroundCallbackHomeWidget(Uri? uri) async { } void main() async { + WidgetsFlutterBinding.ensureInitialized(); try { - WidgetsFlutterBinding.ensureInitialized(); + await AwsomeNotificationHandler().alarm(); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); - FirebaseMessaging.onMessage.listen( - (RemoteMessage message) => AwsomeNotificationHandler().show(message)); //ignore: deprecated_member_use HomeWidget.registerBackgroundCallback(_backgroundCallbackHomeWidget); HomeWidget.registerInteractivityCallback(_backgroundCallbackHomeWidget); - await AwsomeNotificationHandler().alarm(); await AppInitializer.initializeFirebase(); + FirebaseMessaging.onMessage.listen((RemoteMessage message) { + print( + "forground: ${NotificationMessage.fromJson(message.data).toJson()}"); + AwsomeNotificationHandler().show(message); + }); } catch (e) { - debugPrintStack(); + rethrow; } runApp(const Didvan()); @@ -84,6 +122,7 @@ class _DidvanState extends State with WidgetsBindingObserver { @override void dispose() { WidgetsBinding.instance.removeObserver(this); + // MediaService.audioPlayer.dispose(); super.dispose(); } diff --git a/lib/services/app_initalizer.dart b/lib/services/app_initalizer.dart index a6b13b6..6c121f6 100644 --- a/lib/services/app_initalizer.dart +++ b/lib/services/app_initalizer.dart @@ -17,6 +17,9 @@ import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; +import '../models/notification_message.dart'; +import 'notification/awsome/awsome_notification_handler.dart'; + class AppInitializer { static String? fcmToken; static String? clickAction; @@ -196,6 +199,7 @@ class AppInitializer { ? 'BMXHGd93t_htpS7c62ceuuLVVmia2cEDmqxp46g9Vt0B3OxNMKIqN9nupsUMtv2Vq8Yy2sQGIqgCm9FxUSKvssU' : null, ); + print("FCM TOKEN: $fcmToken"); // await fcm.subscribeToTopic('general'); await fcm.requestPermission( alert: true, @@ -206,5 +210,7 @@ class AppInitializer { provisional: false, sound: true, ); + + } } diff --git a/lib/services/media/media.dart b/lib/services/media/media.dart index 9ed06d6..1b18fd2 100644 --- a/lib/services/media/media.dart +++ b/lib/services/media/media.dart @@ -81,7 +81,13 @@ class MediaService { audioPlayerTag = null; currentPodcast = null; podcastPlaylistArgs = null; - MediaService.audioPlayer.stop(); + if(MediaService.audioPlayer.isPlaying.value){ + MediaService.audioPlayer.stop(); + + }else{ + MediaService.audioPlayer.dispose(); + + } } static Future pickImage({required ImageSource source}) async { diff --git a/lib/services/notification/awsome/awsome_notification_handler.dart b/lib/services/notification/awsome/awsome_notification_handler.dart index f5cbd38..4bcd923 100644 --- a/lib/services/notification/awsome/awsome_notification_handler.dart +++ b/lib/services/notification/awsome/awsome_notification_handler.dart @@ -122,12 +122,13 @@ class AwsomeNotificationHandler { channelKey: 'alerts', actionType: ActionType.Default, title: "\u200f ${message.title} \u200f", - // body: message.body.toString(), - notificationLayout: Platform.isAndroid - ? NotificationLayout.Default - : NotificationLayout.BigPicture, + body: message.body.toString(), + notificationLayout: NotificationLayout.BigPicture, largeIcon: message.image.toString(), - bigPicture: Platform.isAndroid ? null : message.image.toString(), + bigPicture: message.image.toString(), + category: NotificationCategory.Social, + wakeUpScreen: true, + hideLargeIconOnExpand: true, payload: message.toPayload(), color: const Color(0xFF007EA7)), ); diff --git a/lib/views/podcasts/studio_details/studio_details_state.dart b/lib/views/podcasts/studio_details/studio_details_state.dart index 75c0205..b8e4ccd 100644 --- a/lib/views/podcasts/studio_details/studio_details_state.dart +++ b/lib/views/podcasts/studio_details/studio_details_state.dart @@ -28,6 +28,7 @@ class StudioDetailsState extends CoreProvier { bool stopOnPodcastEnds = false; int get selectedDetailsIndex => _selectedDetailsIndex; + set selectedDetailsIndex(int value) { _selectedDetailsIndex = value; if (value == 2) { @@ -42,83 +43,88 @@ class StudioDetailsState extends CoreProvier { bool? isForward, bool fetchOnly = false, }) async { - if (args != null) { - this.args = args; - } - if (this.args?.type == 'podcast') { - podcastArgs = this.args; - } - if (MediaService.currentPodcast?.id == id && - this.args?.type == 'podcast' && - !fetchOnly) { - return; - } - _selectedDetailsIndex = 0; - if (isForward != null) { - if (isForward) { - prevStudio = studio; - studio = nextStudio!; - nextStudio = null; - } else { - nextStudio = studio; - studio = prevStudio!; - prevStudio = null; + try { + if (args != null) { + this.args = args; } - notifyListeners(); - _handlePodcastPlayback(studio); - } - if (isForward == null) { if (this.args?.type == 'podcast') { - MediaService.audioPlayerTag = - 'podcast-${MediaService.currentPodcast?.id ?? ''}'; + podcastArgs = this.args; } - appState = AppState.busy; - } else { - alongSideState = AppState.busy; - notifyListeners(); - } - final service = RequestService( - RequestHelper.studioDetails( - id, - this.args ?? const StudioRequestArgs(page: 0), - ), - ); - await service.httpGet(); - nextStudio = null; - prevStudio = null; - if (stopOnPodcastEnds) { - timerValue = 10; - } - stopOnPodcastEnds = false; - if (service.isSuccess) { - if (args?.type == 'video') { - handleTracking(id: id, sendRequest: false); + if (MediaService.currentPodcast?.id == id && + this.args?.type == 'podcast' && + !fetchOnly) { + return; } - final result = service.result; - studio = StudioDetailsData.fromJson(result['studio']); - if (args?.page == 0) { - initialIndex = 0; + _selectedDetailsIndex = 0; + if (isForward != null) { + if (isForward) { + prevStudio = studio; + studio = nextStudio!; + nextStudio = null; + } else { + nextStudio = studio; + studio = prevStudio!; + prevStudio = null; + } + notifyListeners(); + _handlePodcastPlayback(studio); + } + if (isForward == null) { + if (this.args?.type == 'podcast') { + MediaService.audioPlayerTag = + 'podcast-${MediaService.currentPodcast?.id ?? ''}'; + } + appState = AppState.busy; + } else { + alongSideState = AppState.busy; + notifyListeners(); + } + final service = RequestService( + RequestHelper.studioDetails( + id, + this.args ?? const StudioRequestArgs(page: 0), + ), + ); + await service.httpGet(); + nextStudio = null; + prevStudio = null; + if (stopOnPodcastEnds) { + timerValue = 10; + } + stopOnPodcastEnds = false; + if (service.isSuccess) { + if (args?.type == 'video') { + handleTracking(id: id, sendRequest: false); + } + final result = service.result; + studio = StudioDetailsData.fromJson(result['studio']); + if (args?.page == 0) { + initialIndex = 0; + appState = AppState.idle; + return; + } + if (result['nextStudio'].isNotEmpty && this.args?.page != 0) { + nextStudio = StudioDetailsData.fromJson(result['nextStudio']); + } + if (result['prevStudio'].isNotEmpty && this.args?.page != 0) { + prevStudio = StudioDetailsData.fromJson(result['prevStudio']); + } + if (isForward == null && !fetchOnly) { + await _handlePodcastPlayback(studio); + } + alongSideState = AppState.idle; appState = AppState.idle; return; } - if (result['nextStudio'].isNotEmpty && this.args?.page != 0) { - nextStudio = StudioDetailsData.fromJson(result['nextStudio']); + if (isForward == null) { + appState = AppState.failed; + } else { + alongSideState = AppState.failed; + notifyListeners(); } - if (result['prevStudio'].isNotEmpty && this.args?.page != 0) { - prevStudio = StudioDetailsData.fromJson(result['prevStudio']); - } - if (isForward == null && !fetchOnly) { - await _handlePodcastPlayback(studio); - } - alongSideState = AppState.idle; - appState = AppState.idle; - return; - } - if (isForward == null) { - appState = AppState.failed; - } else { - alongSideState = AppState.failed; - notifyListeners(); + } catch (e) { + MediaService.audioPlayer.dispose(); + rethrow; } } @@ -157,6 +163,7 @@ class StudioDetailsState extends CoreProvier { } } else { MediaService.audioPlayer.pause(); + MediaService.audioPlayer.dispose(); } } diff --git a/lib/views/profile/profile.dart b/lib/views/profile/profile.dart index 5482b80..a736c23 100644 --- a/lib/views/profile/profile.dart +++ b/lib/views/profile/profile.dart @@ -93,10 +93,10 @@ class ProfilePage extends StatelessWidget { ), const SizedBox(height: 16), DidvanText( - 'نسخه نرم‌افزار: 3.2.1', + 'نسخه نرم‌افزار: 3.2.2', style: Theme.of(context).textTheme.bodySmall, ), ], ); } -} +} \ No newline at end of file diff --git a/lib/views/widgets/didvan/bnb.dart b/lib/views/widgets/didvan/bnb.dart index 84cc79a..dd773be 100644 --- a/lib/views/widgets/didvan/bnb.dart +++ b/lib/views/widgets/didvan/bnb.dart @@ -139,8 +139,9 @@ class _PlayerNavBar extends StatelessWidget { child: Builder(builder: (context) { if (!_enablePlayerController(state)) return const SizedBox(); if (state.appState == AppState.failed) { - Future.delayed(const Duration(seconds: 2), () { - MediaService.resetAudioPlayer(); + Future.delayed(const Duration(seconds: 2), () async{ + await MediaService.resetAudioPlayer(); + _enablePlayerController(state); }); return DidvanText( 'اتصال اینترنت برقرار نمی‌باشد', @@ -204,7 +205,10 @@ class _PlayerNavBar extends StatelessWidget { ? null : Theme.of(context).colorScheme.secondCTA, gestureSize: 28, - onPressed: MediaService.resetAudioPlayer, + onPressed: () async { + await MediaService.resetAudioPlayer(); + _enablePlayerController(state); + }, ), ), SkeletonImage( @@ -399,6 +403,7 @@ class _NavBarItem extends StatelessWidget { final String title; final IconData selectedIcon; final IconData unselectedIcon; + const _NavBarItem({ Key? key, required this.isSelected, diff --git a/lib/views/widgets/didvan/scaffold.dart b/lib/views/widgets/didvan/scaffold.dart index 38733e1..9d1b858 100644 --- a/lib/views/widgets/didvan/scaffold.dart +++ b/lib/views/widgets/didvan/scaffold.dart @@ -61,6 +61,16 @@ class _DidvanScaffoldState extends State { super.initState(); } + @override + void dispose() { + if(!widget.hidePlayer){ + if(MediaService.currentPodcast != null){ + MediaService.audioPlayer.dispose(); + } + } + super.dispose(); + } + @override Widget build(BuildContext context) { final double statusBarHeight = MediaQuery.of(context).padding.top; @@ -206,6 +216,7 @@ class _PlayerNavBar extends StatelessWidget { MediaService.currentPodcast != null || (MediaService.audioPlayerTag?.contains('podcast') ?? false); + @override Widget build(BuildContext context) { return StreamBuilder( diff --git a/pubspec.lock b/pubspec.lock index 5fbc021..108c264 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,26 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: e4be6711f96d3d4eebe79728897d645b7a5585bbfdd6d534878d202c171266d7 + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.34" + version: "1.3.35" android_intent_plus: dependency: "direct main" description: name: android_intent_plus - sha256: bfb29839be3886fa48faa631aa0123cd8531205df1abb80ee804935c75dd3cdb + sha256: "2bfdbee8d65e7c26f88b66f0a91f2863da4d3596d8a658b4162c8de5cf04b074" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.0.2" animated_custom_dropdown: dependency: "direct main" description: name: animated_custom_dropdown - sha256: "9e286defa42f2e774285015d7ff29523a24260888d53f79a3635328fad5bdad7" + sha256: "5a72dc209041bb53f6c7164bc2e366552d5197cdb032b1c9b2c36e3013024486" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.1" animated_toggle_switch: dependency: "direct main" description: @@ -69,10 +69,10 @@ packages: dependency: "direct main" description: name: audio_video_progress_bar - sha256: ccc7d7b83d2a16c52d4a7fb332faabd1baa053fb0e4c16815aefd3945ab33b81 + sha256: "552b1f73c56c4c88407999e0a8507176f60c56de3e6d63bc20a0eab48467d4c9" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" awesome_notifications: dependency: "direct main" description: @@ -302,74 +302,74 @@ packages: dependency: "direct main" description: name: firebase_auth - sha256: ea95cd29e27e8ec1971af263d74b208ce85dbc7df9197d8b5eab2aa7de7cfea8 + sha256: cfc2d970829202eca09e2896f0a5aa7c87302817ecc0bdfa954f026046bf10ba url: "https://pub.dev" source: hosted - version: "4.19.6" + version: "4.20.0" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: c252d2c97a02cf03fbf3595c5f7edf2a731062356b09d2c338f0b3d63567239f + sha256: a0270e1db3b2098a14cb2a2342b3cd2e7e458e0c391b1f64f6f78b14296ec093 url: "https://pub.dev" source: hosted - version: "7.2.7" + version: "7.3.0" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "5db2319d59b4bb08cf0cc26e0f110f9ae1cf9cf775ce516e5cc38cd6704253de" + sha256: "64e067e763c6378b7e774e872f0f59f6812885e43020e25cde08f42e9459837b" url: "https://pub.dev" source: hosted - version: "5.11.6" + version: "5.12.0" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "4b5100e2dbc3fe72c2d4241a046d3f01457fe11293283a324f5c52575e3406f8" + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "2.31.1" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 + sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" + sha256: "6643fe3dbd021e6ccfb751f7882b39df355708afbdeb4130fc50f9305a9d1a3d" url: "https://pub.dev" source: hosted - version: "2.17.0" + version: "2.17.2" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: e0882a7426821f7caccaabfc15a535155cd15b4daa73a5a7b3af701a552d73ab + sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 url: "https://pub.dev" source: hosted - version: "14.9.2" + version: "14.9.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "52e12cc50e1395ad7ea3552dcbe9958fb1994b5afcf58ee4c0db053932a6fce5" + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" url: "https://pub.dev" source: hosted - version: "4.5.35" + version: "4.5.37" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "8812cc5929380b783f92290d934bf32e2fea06701583f47cdccd5f13f4f24522" + sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" url: "https://pub.dev" source: hosted - version: "3.8.5" + version: "3.8.7" fl_chart: dependency: "direct main" description: @@ -411,10 +411,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "40e6fbd2da7dcc7ed78432c5cdab1559674b4af035fddbfb2f9a8f9c2112fcef" + sha256: ced76d337f54de33d7d9f06092137b4ac2da5079e00cee8a11a1794ffc7c61c6 url: "https://pub.dev" source: hosted - version: "17.1.2" + version: "17.2.1" flutter_local_notifications_linux: dependency: transitive description: @@ -427,10 +427,10 @@ packages: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "340abf67df238f7f0ef58f4a26d2a83e1ab74c77ab03cd2b2d5018ac64db30b7" + sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.2.0" flutter_localizations: dependency: "direct main" description: flutter @@ -464,18 +464,18 @@ packages: dependency: transitive description: name: flutter_secure_storage_macos - sha256: "8cfa53010a294ff095d7be8fa5bb15f2252c50018d69c5104851303f3ff92510" + sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.2" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: "301f67ee9b87f04aef227f57f13f126fa7b13543c8e7a93f25c5d2d534c28a4a" + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" flutter_secure_storage_web: dependency: transitive description: @@ -602,18 +602,18 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "79455f6cff4cbef583b2b524bbf0d4ec424e5959f4d464e36ef5323715b98370" + sha256: "0f57fee1e8bfadf8cc41818bbcd7f72e53bb768a54d9496355d5e8a5681a19f1" url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.12+1" image_picker_for_web: dependency: transitive description: @@ -626,10 +626,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: cb0db0ec0d3e2cd49674f2e6053be25ccdb959832607c1cbd215dd6cf10fb0dd + sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" url: "https://pub.dev" source: hosted - version: "0.8.11" + version: "0.8.12" image_picker_linux: dependency: transitive description: @@ -842,18 +842,18 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: "8bb852cd759488893805c3161d0b2b5db55db52f773dbb014420b304055ba2c5" + sha256: b29a799ca03be9f999aa6c39f7de5209482d638e6f857f6b93b0875c618b7e54 url: "https://pub.dev" source: hosted - version: "12.0.6" + version: "12.0.7" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: e9ad66020b89ff1b63908f247c2c6f931c6e62699b756ef8b3c4569350cd8662 + sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0 url: "https://pub.dev" source: hosted - version: "9.4.4" + version: "9.4.5" permission_handler_html: dependency: transitive description: @@ -882,10 +882,10 @@ packages: dependency: "direct main" description: name: persian_datetime_picker - sha256: dc9c2bbcecef594a7453307d8b41781af4c667da88e23d560e540ae3b8d8fe20 + sha256: "097f69484a4ea8fdf8d2051b0b6205edbed912f096b3c521df0985f656ef5584" url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" persian_number_utility: dependency: "direct main" description: @@ -914,10 +914,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: @@ -1135,18 +1135,18 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.2.6" + version: "6.3.0" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775" + sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_ios: dependency: transitive description: @@ -1303,18 +1303,18 @@ packages: dependency: "direct main" description: name: webview_flutter - sha256: "25e1b6e839e8cbfbd708abc6f85ed09d1727e24e08e08c6b8590d7c65c9a8932" + sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522" url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.8.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: dad3313c9ead95517bb1cae5e1c9d20ba83729d5a59e5e83c0a2d66203f27f91 + sha256: "0d21cfc3bfdd2e30ab2ebeced66512b91134b39e72e97b43db2d47dda1c4e53a" url: "https://pub.dev" source: hosted - version: "3.16.1" + version: "3.16.3" webview_flutter_platform_interface: dependency: transitive description: @@ -1327,10 +1327,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: f12f8d8a99784b863e8b85e4a9a5e3cf1839d6803d2c0c3e0533a8f3c5a992a7 + sha256: "7affdf9d680c015b11587181171d3cad8093e449db1f7d9f0f08f4f33d24f9a0" url: "https://pub.dev" source: hosted - version: "3.13.0" + version: "3.13.1" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 998822c..164afb0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 3.2.1+3210 +version: 3.2.2+3220 environment: sdk: ">=2.19.0 <3.0.0"