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"