diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 549da66..1ef9761 100644 Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index ad4a263..96b7009 100644 Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 48f0188..d32aa17 100644 Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 966049e..96dea43 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index d4f8ac8..4bde9bc 100644 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/lib/assets/animations/indicator-dark.riv b/lib/assets/animations/indicator-dark.riv deleted file mode 100644 index d995f60..0000000 Binary files a/lib/assets/animations/indicator-dark.riv and /dev/null differ diff --git a/lib/assets/animations/indicator-light.riv b/lib/assets/animations/indicator-light.riv deleted file mode 100644 index 0190c3e..0000000 Binary files a/lib/assets/animations/indicator-light.riv and /dev/null differ diff --git a/lib/assets/animations/loading.gif b/lib/assets/animations/loading.gif index cf967e1..917d03f 100644 Binary files a/lib/assets/animations/loading.gif and b/lib/assets/animations/loading.gif differ diff --git a/lib/constants/assets.dart b/lib/constants/assets.dart index 5cffd24..48283e4 100644 --- a/lib/constants/assets.dart +++ b/lib/constants/assets.dart @@ -17,8 +17,7 @@ class Assets { '$_baseLogosPath/logo-horizontal-$_themeSuffix.svg'; static String get studioLogo => '$_baseLogosPath/studio-$_themeSuffix.svg'; - static String get logoLoadingAnimation => - '$_baseAnimationsPath/indicator-$_themeSuffix.riv'; + static String loadingAnimation = '$_baseAnimationsPath/loading.gif'; static String get businessCategoryIcon => '$_baseCategoriesPath/business-$_themeSuffix.svg'; diff --git a/lib/routes/route_generator.dart b/lib/routes/route_generator.dart index 159702f..5a881c6 100644 --- a/lib/routes/route_generator.dart +++ b/lib/routes/route_generator.dart @@ -167,18 +167,18 @@ class RouteGenerator { ), ); default: - return _errorRoute(); + return _errorRoute(settings.name ?? ''); } } - static Route _errorRoute() { + static Route _errorRoute(String name) { return MaterialPageRoute(builder: (_) { return Scaffold( appBar: AppBar( title: const Text('Error'), ), - body: const Center( - child: Text('ERROR'), + body: Center( + child: Text('$name is not valid'), ), ); }); diff --git a/lib/services/media/media.dart b/lib/services/media/media.dart index cb4813f..9ed06d6 100644 --- a/lib/services/media/media.dart +++ b/lib/services/media/media.dart @@ -41,9 +41,8 @@ class MediaService { String source; if (isNetworkAudio) { if (isVoiceMessage) { - source = RequestHelper.baseUrl + - audioSource + - '?accessToken=${RequestService.token}'; + source = + '${RequestHelper.baseUrl + audioSource}?accessToken=${RequestService.token}'; } else { source = audioSource; } diff --git a/lib/utils/action_sheet.dart b/lib/utils/action_sheet.dart index 4a43f85..6fe6f37 100644 --- a/lib/utils/action_sheet.dart +++ b/lib/utils/action_sheet.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:bot_toast/bot_toast.dart'; import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; +import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; import 'package:didvan/models/view/alert_data.dart'; @@ -30,10 +31,12 @@ class ActionSheetUtils { await showDialog( barrierDismissible: false, context: context, - builder: (context) => SpinKitChasingDots( - color: DesignConfig.isDark - ? Theme.of(context).colorScheme.primary - : Theme.of(context).colorScheme.navigation, + builder: (context) => Center( + child: Image.asset( + Assets.loadingAnimation, + width: 160, + height: 160, + ), ), ); } diff --git a/lib/views/home/direct/widgets/audio_widget.dart b/lib/views/home/direct/widgets/audio_widget.dart index f116b32..95c5ba6 100644 --- a/lib/views/home/direct/widgets/audio_widget.dart +++ b/lib/views/home/direct/widgets/audio_widget.dart @@ -31,12 +31,16 @@ class AudioWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( - child: AudioSlider( - tag: audioMetaData != null ? 'radar-$id' : 'message-$id', - duration: audioMetaData?.duration, - showTimer: true, + child: Padding( + padding: const EdgeInsets.only(top: 12), + child: AudioSlider( + tag: audioMetaData != null ? 'radar-$id' : 'message-$id', + duration: audioMetaData?.duration, + showTimer: true, + ), ), ), + const SizedBox(width: 12), _AudioControllerButton( audioFile: audioFile, audioUrl: audioUrl, diff --git a/lib/views/home/home.dart b/lib/views/home/home.dart index 3a2099c..41c1f44 100644 --- a/lib/views/home/home.dart +++ b/lib/views/home/home.dart @@ -22,13 +22,14 @@ class _HomeState extends State with SingleTickerProviderStateMixin { @override void initState() { + final state = context.read(); DesignConfig.updateSystemUiOverlayStyle(); _tabController = TabController(length: 5, vsync: this, initialIndex: 2); _tabController.addListener(() { - context.read().currentPageIndex = _tabController.index; + state.currentPageIndex = _tabController.index; }); Future.delayed(Duration.zero, () { - AppInitializer.handleCLick(); + AppInitializer.handleCLick(state, _tabController); }); super.initState(); } diff --git a/lib/views/home/radar/radar_details/radar_details.dart b/lib/views/home/radar/radar_details/radar_details.dart index 9e36cce..5626d3a 100644 --- a/lib/views/home/radar/radar_details/radar_details.dart +++ b/lib/views/home/radar/radar_details/radar_details.dart @@ -1,4 +1,3 @@ -import 'package:didvan/models/enums.dart'; import 'package:didvan/models/requests/radar.dart'; import 'package:didvan/views/home/radar/radar_details/radar_details_state.dart'; import 'package:didvan/views/home/widgets/floating_navigation_bar.dart'; diff --git a/lib/views/home/settings/settings.dart b/lib/views/home/settings/settings.dart index 36c7a87..80a4335 100644 --- a/lib/views/home/settings/settings.dart +++ b/lib/views/home/settings/settings.dart @@ -96,14 +96,13 @@ class Settings extends StatelessWidget { ), const ItemTitle( title: 'درباره ما', - icon: DidvanIcons.info_circle_regular, ), DidvanCard( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ MenuOption( - icon: DidvanIcons.didvan_solid, + icon: DidvanIcons.info_circle_regular, title: 'معرفی دیدوان', onTap: () => launchUrl(Uri.parse('https://didvan.app/#info')), ), diff --git a/lib/views/splash/splash.dart b/lib/views/splash/splash.dart index 1f6f484..10dad53 100644 --- a/lib/views/splash/splash.dart +++ b/lib/views/splash/splash.dart @@ -2,6 +2,7 @@ import 'dart:developer'; import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; +import 'package:didvan/constants/assets.dart'; import 'package:didvan/main.dart'; import 'package:didvan/providers/media.dart'; import 'package:didvan/providers/server_data.dart'; @@ -14,10 +15,12 @@ import 'package:didvan/services/storage/storage.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/views/widgets/didvan/button.dart'; import 'package:didvan/views/widgets/logos/didvan_horizontal_logo.dart'; +import 'package:didvan/views/widgets/logos/didvan_vertical_logo.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; import 'package:universal_html/html.dart' as html; @@ -54,22 +57,21 @@ class _SplashState extends State { child: Material( child: Container( alignment: Alignment.center, - padding: const EdgeInsets.all(60), + padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 60), color: Theme.of(context).colorScheme.background, child: Column( children: [ const SizedBox(height: 70), - const Expanded( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 40), - child: DidvanVerticalLogo(), + Expanded( + child: SvgPicture.asset( + Assets.horizontalLogoWithText, ), ), if (!_errorOccured) - SpinKitChasingDots( - color: DesignConfig.isDark - ? Theme.of(context).colorScheme.primary - : Theme.of(context).colorScheme.navigation, + Image.asset( + Assets.loadingAnimation, + width: 60, + height: 60, ), if (_errorOccured) const SizedBox(height: 30), if (_errorOccured) diff --git a/lib/views/widgets/state_handlers/state_handler.dart b/lib/views/widgets/state_handlers/state_handler.dart index c54c651..020a5a0 100644 --- a/lib/views/widgets/state_handlers/state_handler.dart +++ b/lib/views/widgets/state_handlers/state_handler.dart @@ -1,3 +1,4 @@ +import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/providers/core.dart'; import 'package:didvan/views/widgets/state_handlers/empty_connection.dart'; @@ -40,10 +41,14 @@ class StateHandler extends StatelessWidget { case AppState.busy: return Padding( padding: EdgeInsets.only(top: topPadding), - child: placeholder ?? - SpinKitSpinningLines( - color: Theme.of(context).colorScheme.primary, - ), + child: Center( + child: placeholder ?? + Image.asset( + Assets.loadingAnimation, + width: 100, + height: 100, + ), + ), ); case AppState.failed: return Center(child: EmptyConnection(onRetry: onRetry)); diff --git a/pubspec.lock b/pubspec.lock index 4d8022b..279b8ba 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -39,9 +39,11 @@ packages: better_player: dependency: "direct main" description: - name: better_player - url: "https://pub.dartlang.org" - source: hosted + path: "." + ref: HEAD + resolved-ref: "91a9625524cdff448e0a9deb5047bcf20cc8dcf1" + url: "https://github.com/tintran-dev/betterplayer.git" + source: git version: "0.0.83" boolean_selector: dependency: transitive diff --git a/pubspec.yaml b/pubspec.yaml index 176ba8a..6253d00 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,7 +63,9 @@ dependencies: webview_flutter: ^3.0.1 expandable_bottom_sheet: ^1.1.1+1 permission_handler: ^10.2.0 - better_player: ^0.0.81 + better_player: + git: + url: https://github.com/tintran-dev/betterplayer.git assets_audio_player: ^3.0.4+1 fl_chart: ^0.55.2 diff --git a/web/icons/icon.png b/web/icons/icon.png index 966049e..d32aa17 100644 Binary files a/web/icons/icon.png and b/web/icons/icon.png differ