new logo design
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 105 KiB |
|
|
@ -17,8 +17,7 @@ class Assets {
|
||||||
'$_baseLogosPath/logo-horizontal-$_themeSuffix.svg';
|
'$_baseLogosPath/logo-horizontal-$_themeSuffix.svg';
|
||||||
static String get studioLogo => '$_baseLogosPath/studio-$_themeSuffix.svg';
|
static String get studioLogo => '$_baseLogosPath/studio-$_themeSuffix.svg';
|
||||||
|
|
||||||
static String get logoLoadingAnimation =>
|
static String loadingAnimation = '$_baseAnimationsPath/loading.gif';
|
||||||
'$_baseAnimationsPath/indicator-$_themeSuffix.riv';
|
|
||||||
|
|
||||||
static String get businessCategoryIcon =>
|
static String get businessCategoryIcon =>
|
||||||
'$_baseCategoriesPath/business-$_themeSuffix.svg';
|
'$_baseCategoriesPath/business-$_themeSuffix.svg';
|
||||||
|
|
|
||||||
|
|
@ -167,18 +167,18 @@ class RouteGenerator {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
default:
|
default:
|
||||||
return _errorRoute();
|
return _errorRoute(settings.name ?? '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Route<dynamic> _errorRoute() {
|
static Route<dynamic> _errorRoute(String name) {
|
||||||
return MaterialPageRoute(builder: (_) {
|
return MaterialPageRoute(builder: (_) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Error'),
|
title: const Text('Error'),
|
||||||
),
|
),
|
||||||
body: const Center(
|
body: Center(
|
||||||
child: Text('ERROR'),
|
child: Text('$name is not valid'),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,8 @@ class MediaService {
|
||||||
String source;
|
String source;
|
||||||
if (isNetworkAudio) {
|
if (isNetworkAudio) {
|
||||||
if (isVoiceMessage) {
|
if (isVoiceMessage) {
|
||||||
source = RequestHelper.baseUrl +
|
source =
|
||||||
audioSource +
|
'${RequestHelper.baseUrl + audioSource}?accessToken=${RequestService.token}';
|
||||||
'?accessToken=${RequestService.token}';
|
|
||||||
} else {
|
} else {
|
||||||
source = audioSource;
|
source = audioSource;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import 'dart:async';
|
||||||
import 'package:bot_toast/bot_toast.dart';
|
import 'package:bot_toast/bot_toast.dart';
|
||||||
import 'package:didvan/config/design_config.dart';
|
import 'package:didvan/config/design_config.dart';
|
||||||
import 'package:didvan/config/theme_data.dart';
|
import 'package:didvan/config/theme_data.dart';
|
||||||
|
import 'package:didvan/constants/assets.dart';
|
||||||
import 'package:didvan/models/enums.dart';
|
import 'package:didvan/models/enums.dart';
|
||||||
import 'package:didvan/models/view/action_sheet_data.dart';
|
import 'package:didvan/models/view/action_sheet_data.dart';
|
||||||
import 'package:didvan/models/view/alert_data.dart';
|
import 'package:didvan/models/view/alert_data.dart';
|
||||||
|
|
@ -30,10 +31,12 @@ class ActionSheetUtils {
|
||||||
await showDialog(
|
await showDialog(
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => SpinKitChasingDots(
|
builder: (context) => Center(
|
||||||
color: DesignConfig.isDark
|
child: Image.asset(
|
||||||
? Theme.of(context).colorScheme.primary
|
Assets.loadingAnimation,
|
||||||
: Theme.of(context).colorScheme.navigation,
|
width: 160,
|
||||||
|
height: 160,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,12 +31,16 @@ class AudioWidget extends StatelessWidget {
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 12),
|
||||||
child: AudioSlider(
|
child: AudioSlider(
|
||||||
tag: audioMetaData != null ? 'radar-$id' : 'message-$id',
|
tag: audioMetaData != null ? 'radar-$id' : 'message-$id',
|
||||||
duration: audioMetaData?.duration,
|
duration: audioMetaData?.duration,
|
||||||
showTimer: true,
|
showTimer: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
_AudioControllerButton(
|
_AudioControllerButton(
|
||||||
audioFile: audioFile,
|
audioFile: audioFile,
|
||||||
audioUrl: audioUrl,
|
audioUrl: audioUrl,
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,14 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
final state = context.read<HomeState>();
|
||||||
DesignConfig.updateSystemUiOverlayStyle();
|
DesignConfig.updateSystemUiOverlayStyle();
|
||||||
_tabController = TabController(length: 5, vsync: this, initialIndex: 2);
|
_tabController = TabController(length: 5, vsync: this, initialIndex: 2);
|
||||||
_tabController.addListener(() {
|
_tabController.addListener(() {
|
||||||
context.read<HomeState>().currentPageIndex = _tabController.index;
|
state.currentPageIndex = _tabController.index;
|
||||||
});
|
});
|
||||||
Future.delayed(Duration.zero, () {
|
Future.delayed(Duration.zero, () {
|
||||||
AppInitializer.handleCLick();
|
AppInitializer.handleCLick(state, _tabController);
|
||||||
});
|
});
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
import 'package:didvan/models/enums.dart';
|
|
||||||
import 'package:didvan/models/requests/radar.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/radar/radar_details/radar_details_state.dart';
|
||||||
import 'package:didvan/views/home/widgets/floating_navigation_bar.dart';
|
import 'package:didvan/views/home/widgets/floating_navigation_bar.dart';
|
||||||
|
|
|
||||||
|
|
@ -96,14 +96,13 @@ class Settings extends StatelessWidget {
|
||||||
),
|
),
|
||||||
const ItemTitle(
|
const ItemTitle(
|
||||||
title: 'درباره ما',
|
title: 'درباره ما',
|
||||||
icon: DidvanIcons.info_circle_regular,
|
|
||||||
),
|
),
|
||||||
DidvanCard(
|
DidvanCard(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
MenuOption(
|
MenuOption(
|
||||||
icon: DidvanIcons.didvan_solid,
|
icon: DidvanIcons.info_circle_regular,
|
||||||
title: 'معرفی دیدوان',
|
title: 'معرفی دیدوان',
|
||||||
onTap: () => launchUrl(Uri.parse('https://didvan.app/#info')),
|
onTap: () => launchUrl(Uri.parse('https://didvan.app/#info')),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'dart:developer';
|
||||||
|
|
||||||
import 'package:didvan/config/design_config.dart';
|
import 'package:didvan/config/design_config.dart';
|
||||||
import 'package:didvan/config/theme_data.dart';
|
import 'package:didvan/config/theme_data.dart';
|
||||||
|
import 'package:didvan/constants/assets.dart';
|
||||||
import 'package:didvan/main.dart';
|
import 'package:didvan/main.dart';
|
||||||
import 'package:didvan/providers/media.dart';
|
import 'package:didvan/providers/media.dart';
|
||||||
import 'package:didvan/providers/server_data.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/utils/action_sheet.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/button.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_horizontal_logo.dart';
|
||||||
|
import 'package:didvan/views/widgets/logos/didvan_vertical_logo.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:universal_html/html.dart' as html;
|
import 'package:universal_html/html.dart' as html;
|
||||||
|
|
||||||
|
|
@ -54,22 +57,21 @@ class _SplashState extends State<Splash> {
|
||||||
child: Material(
|
child: Material(
|
||||||
child: Container(
|
child: Container(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: const EdgeInsets.all(60),
|
padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 60),
|
||||||
color: Theme.of(context).colorScheme.background,
|
color: Theme.of(context).colorScheme.background,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 70),
|
const SizedBox(height: 70),
|
||||||
const Expanded(
|
Expanded(
|
||||||
child: Padding(
|
child: SvgPicture.asset(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 40),
|
Assets.horizontalLogoWithText,
|
||||||
child: DidvanVerticalLogo(),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (!_errorOccured)
|
if (!_errorOccured)
|
||||||
SpinKitChasingDots(
|
Image.asset(
|
||||||
color: DesignConfig.isDark
|
Assets.loadingAnimation,
|
||||||
? Theme.of(context).colorScheme.primary
|
width: 60,
|
||||||
: Theme.of(context).colorScheme.navigation,
|
height: 60,
|
||||||
),
|
),
|
||||||
if (_errorOccured) const SizedBox(height: 30),
|
if (_errorOccured) const SizedBox(height: 30),
|
||||||
if (_errorOccured)
|
if (_errorOccured)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:didvan/constants/assets.dart';
|
||||||
import 'package:didvan/models/enums.dart';
|
import 'package:didvan/models/enums.dart';
|
||||||
import 'package:didvan/providers/core.dart';
|
import 'package:didvan/providers/core.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/empty_connection.dart';
|
import 'package:didvan/views/widgets/state_handlers/empty_connection.dart';
|
||||||
|
|
@ -40,9 +41,13 @@ class StateHandler<T extends CoreProvier> extends StatelessWidget {
|
||||||
case AppState.busy:
|
case AppState.busy:
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(top: topPadding),
|
padding: EdgeInsets.only(top: topPadding),
|
||||||
|
child: Center(
|
||||||
child: placeholder ??
|
child: placeholder ??
|
||||||
SpinKitSpinningLines(
|
Image.asset(
|
||||||
color: Theme.of(context).colorScheme.primary,
|
Assets.loadingAnimation,
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
case AppState.failed:
|
case AppState.failed:
|
||||||
|
|
|
||||||
|
|
@ -39,9 +39,11 @@ packages:
|
||||||
better_player:
|
better_player:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: better_player
|
path: "."
|
||||||
url: "https://pub.dartlang.org"
|
ref: HEAD
|
||||||
source: hosted
|
resolved-ref: "91a9625524cdff448e0a9deb5047bcf20cc8dcf1"
|
||||||
|
url: "https://github.com/tintran-dev/betterplayer.git"
|
||||||
|
source: git
|
||||||
version: "0.0.83"
|
version: "0.0.83"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,9 @@ dependencies:
|
||||||
webview_flutter: ^3.0.1
|
webview_flutter: ^3.0.1
|
||||||
expandable_bottom_sheet: ^1.1.1+1
|
expandable_bottom_sheet: ^1.1.1+1
|
||||||
permission_handler: ^10.2.0
|
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
|
assets_audio_player: ^3.0.4+1
|
||||||
fl_chart: ^0.55.2
|
fl_chart: ^0.55.2
|
||||||
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 4.7 KiB |