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';
|
||||
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';
|
||||
|
|
|
|||
|
|
@ -167,18 +167,18 @@ class RouteGenerator {
|
|||
),
|
||||
);
|
||||
default:
|
||||
return _errorRoute();
|
||||
return _errorRoute(settings.name ?? '');
|
||||
}
|
||||
}
|
||||
|
||||
static Route<dynamic> _errorRoute() {
|
||||
static Route<dynamic> _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'),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
|
|||
|
||||
@override
|
||||
void initState() {
|
||||
final state = context.read<HomeState>();
|
||||
DesignConfig.updateSystemUiOverlayStyle();
|
||||
_tabController = TabController(length: 5, vsync: this, initialIndex: 2);
|
||||
_tabController.addListener(() {
|
||||
context.read<HomeState>().currentPageIndex = _tabController.index;
|
||||
state.currentPageIndex = _tabController.index;
|
||||
});
|
||||
Future.delayed(Duration.zero, () {
|
||||
AppInitializer.handleCLick();
|
||||
AppInitializer.handleCLick(state, _tabController);
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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<Splash> {
|
|||
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)
|
||||
|
|
|
|||
|
|
@ -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<T extends CoreProvier> 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));
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 4.7 KiB |