This commit is contained in:
MohammadTaha Basiri 2022-12-09 22:18:29 +03:30
parent 2025e689d9
commit cbfebd0981
19 changed files with 92 additions and 46 deletions

View File

@ -0,0 +1,31 @@
//
// Generated file. Do not edit.
//
// ignore_for_file: directives_ordering
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: depend_on_referenced_packages
import 'package:assets_audio_player_web/web/assets_audio_player_web.dart';
import 'package:firebase_core_web/firebase_core_web.dart';
import 'package:firebase_messaging_web/firebase_messaging_web.dart';
import 'package:flutter_secure_storage_web/flutter_secure_storage_web.dart';
import 'package:image_picker_for_web/image_picker_for_web.dart';
import 'package:record_web/record_web.dart';
import 'package:url_launcher_web/url_launcher_web.dart';
import 'package:wakelock_web/wakelock_web.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
// ignore: public_member_api_docs
void registerPlugins(Registrar registrar) {
AssetsAudioPlayerWebPlugin.registerWith(registrar);
FirebaseCoreWeb.registerWith(registrar);
FirebaseMessagingWeb.registerWith(registrar);
FlutterSecureStorageWeb.registerWith(registrar);
ImagePickerPlugin.registerWith(registrar);
RecordPluginWeb.registerWith(registrar);
UrlLauncherPlugin.registerWith(registrar);
WakelockWeb.registerWith(registrar);
registrar.registerMessageHandler();
}

View File

@ -10,7 +10,9 @@ class ServerDataProvider {
} }
static int labelToTypeId(String label) { static int labelToTypeId(String label) {
if (label.contains('پشتیبانی اپلیکیشن')) { if (label.contains('می‌خواهم بیشتر بدانم')) {
return 9;
} else if (label.contains('پشتیبانی اپلیکیشن')) {
return 8; return 8;
} else if (label.contains('پشتیبانی محتوا')) { } else if (label.contains('پشتیبانی محتوا')) {
return 7; return 7;

View File

@ -14,12 +14,12 @@ class StorageService {
required String subDirectory, required String subDirectory,
required String name, required String name,
}) async { }) async {
final dir = io.Directory(appDocsDir + '/$subDirectory'); final dir = io.Directory('$appDocsDir/$subDirectory');
if (!await dir.exists()) { if (!await dir.exists()) {
await dir.create(recursive: true); await dir.create(recursive: true);
} }
final file = await io.File( final file = await io.File(
appDocsDir + '/$subDirectory/$name', '$appDocsDir/$subDirectory/$name',
).create(recursive: true); ).create(recursive: true);
await file.writeAsBytes(bytes); await file.writeAsBytes(bytes);
} }

View File

@ -91,24 +91,24 @@ class DateTimeUtils {
double interval = seconds / 31536000; double interval = seconds / 31536000;
if (interval > 1) { if (interval > 1) {
return interval.floor().toString() + " سال پیش"; return "${interval.floor()} سال پیش";
} }
interval = seconds / 2592000; interval = seconds / 2592000;
if (interval > 1) { if (interval > 1) {
return interval.floor().toString() + " ماه پیش"; return "${interval.floor()} ماه پیش";
} }
interval = seconds / 86400; interval = seconds / 86400;
if (interval > 1) { if (interval > 1) {
if (interval.floor() == 1) return 'دیروز'; if (interval.floor() == 1) return 'دیروز';
return interval.floor().toString() + " روز پیش"; return "${interval.floor()} روز پیش";
} }
interval = seconds / 3600; interval = seconds / 3600;
if (interval > 1) { if (interval > 1) {
return interval.floor().toString() + " ساعت پیش"; return "${interval.floor()} ساعت پیش";
} }
interval = seconds / 60; interval = seconds / 60;
if (interval > 1) { if (interval > 1) {
return interval.floor().toString() + " دقیقه پیش"; return "${interval.floor()} دقیقه پیش";
} }
return 'هم اکنون'; return 'هم اکنون';
// return seconds.floor().toString() + " ثانیه پیش"; // return seconds.floor().toString() + " ثانیه پیش";

View File

@ -60,7 +60,7 @@ class AuthenticationState extends CoreProvier {
Future<void> sendOtpToken() async { Future<void> sendOtpToken() async {
final service = RequestService( final service = RequestService(
RequestHelper.otp + '?username=$username', '${RequestHelper.otp}?username=$username',
useAutherization: false, useAutherization: false,
); );
await service.httpGet(); await service.httpGet();

View File

@ -1,5 +1,6 @@
import 'package:didvan/views/authentication/widgets/authentication_app_bar.dart'; import 'package:didvan/views/authentication/widgets/authentication_app_bar.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/material.dart'; import 'package:flutter/material.dart';
class AuthenticationLayout extends StatelessWidget { class AuthenticationLayout extends StatelessWidget {
@ -39,9 +40,7 @@ class AuthenticationLayout extends StatelessWidget {
bottom: 40, bottom: 40,
), ),
sliver: const SliverToBoxAdapter( sliver: const SliverToBoxAdapter(
child: DidvanVerticalLogo( child: DidvanHorizontalLogo(),
height: 200,
),
), ),
), ),
SliverPadding( SliverPadding(

View File

@ -23,7 +23,7 @@ class Comments extends StatefulWidget {
}) : super(key: key); }) : super(key: key);
@override @override
_CommentsState createState() => _CommentsState(); State<Comments> createState() => _CommentsState();
} }
class _CommentsState extends State<Comments> { class _CommentsState extends State<Comments> {

View File

@ -72,7 +72,7 @@ class _StatisticDetailsState extends State<StatisticDetails> {
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 16), padding: const EdgeInsets.symmetric(horizontal: 60),
child: SizedBox( child: SizedBox(
width: double.infinity, width: double.infinity,
height: 120, height: 120,
@ -89,13 +89,10 @@ class _StatisticDetailsState extends State<StatisticDetails> {
Theme.of(context).colorScheme.navigation, Theme.of(context).colorScheme.navigation,
getTooltipItems: (data) => [ getTooltipItems: (data) => [
LineTooltipItem( LineTooltipItem(
state.datas[data.first.spotIndex].tEn! + '${state.datas[data.first.spotIndex].tEn!}\n${intl.NumberFormat("###,000", "en_US").format(
'\n' +
intl.NumberFormat("###,000", "en_US")
.format(
data.first.bar data.first.bar
.spots[data.first.spotIndex].y, .spots[data.first.spotIndex].y,
), )}',
Theme.of(context) Theme.of(context)
.textTheme .textTheme
.caption! .caption!

View File

@ -97,7 +97,7 @@ class StatisticOverview extends StatelessWidget {
if (_hasDiff) const SizedBox(width: 4), if (_hasDiff) const SizedBox(width: 4),
if (_hasDiff) if (_hasDiff)
DidvanText( DidvanText(
statistic.data.dp.toString() + '%', '${statistic.data.dp}%',
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
color: _diffColor(context), color: _diffColor(context),
), ),

View File

@ -16,12 +16,10 @@ import 'package:didvan/views/home/widgets/overview/podcast.dart';
import 'package:didvan/views/home/widgets/overview/video.dart'; import 'package:didvan/views/home/widgets/overview/video.dart';
import 'package:didvan/views/home/widgets/search_field.dart'; import 'package:didvan/views/home/widgets/search_field.dart';
import 'package:didvan/views/widgets/animated_visibility.dart'; import 'package:didvan/views/widgets/animated_visibility.dart';
import 'package:didvan/views/widgets/didvan/checkbox.dart';
import 'package:didvan/views/widgets/didvan/divider.dart'; import 'package:didvan/views/widgets/didvan/divider.dart';
import 'package:didvan/views/widgets/didvan/icon_button.dart'; import 'package:didvan/views/widgets/didvan/icon_button.dart';
import 'package:didvan/views/widgets/didvan/radial_button.dart'; import 'package:didvan/views/widgets/didvan/radial_button.dart';
import 'package:didvan/views/widgets/item_title.dart'; import 'package:didvan/views/widgets/item_title.dart';
import 'package:didvan/views/widgets/logos/didvan_vertical_logo.dart';
import 'package:didvan/views/widgets/state_handlers/empty_result.dart'; import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
import 'package:didvan/views/widgets/state_handlers/sliver_state_handler.dart'; import 'package:didvan/views/widgets/state_handlers/sliver_state_handler.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

View File

@ -46,8 +46,7 @@ class _StudioDetailsState extends State<StudioDetails> {
(int viewId) => html.IFrameElement() (int viewId) => html.IFrameElement()
..allowFullscreen = true ..allowFullscreen = true
..src = Uri.dataFromString( ..src = Uri.dataFromString(
'<style>*{padding: 0 ; margin: 0; background: black;}</style>' + '<style>*{padding: 0 ; margin: 0; background: black;}</style>${state.studio.iframe!}',
state.studio.iframe!,
mimeType: 'text/html', mimeType: 'text/html',
).toString() ).toString()
..style.border = 'none', ..style.border = 'none',

View File

@ -222,7 +222,7 @@ class AudioPlayerWidget extends StatelessWidget {
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
DidvanText( DidvanText(
timerValue.toString() + ' دقیقه', '$timerValue دقیقه',
style: Theme.of(context).textTheme.headline3, style: Theme.of(context).textTheme.headline3,
), ),
const SizedBox(height: 12), const SizedBox(height: 12),

View File

@ -121,14 +121,6 @@ class _CategoriesListState extends State<CategoriesList> {
width: 100, width: 100,
padding: const EdgeInsets.all(4), padding: const EdgeInsets.all(4),
alignment: Alignment.center, alignment: Alignment.center,
child: FittedBox(
fit: BoxFit.scaleDown,
child: DidvanText(
category.label,
fontWeight: FontWeight.w600,
color: Theme.of(context).colorScheme.focusedBorder,
),
),
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.selectedCats.length == 1 && color: widget.selectedCats.length == 1 &&
widget.selectedCats.contains(category) || widget.selectedCats.contains(category) ||
@ -140,6 +132,14 @@ class _CategoriesListState extends State<CategoriesList> {
), ),
borderRadius: DesignConfig.lowBorderRadius, borderRadius: DesignConfig.lowBorderRadius,
), ),
child: FittedBox(
fit: BoxFit.scaleDown,
child: DidvanText(
category.label,
fontWeight: FontWeight.w600,
color: Theme.of(context).colorScheme.focusedBorder,
),
),
), ),
); );
} }

View File

@ -260,6 +260,32 @@ class _FloatingNavigationBarState extends State<FloatingNavigationBar> {
}, },
icon: DidvanIcons.description_regular, icon: DidvanIcons.description_regular,
), ),
if (widget.isRadar) ...[
const DidvanDivider(),
MenuOption(
title: 'می‌خواهم بیشتر بدانم',
icon: DidvanIcons.info_circle_regular,
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).pushNamed(
Routes.direct,
arguments: {
'radarAttachment': RadarAttachment(
id: widget.item.id,
title: widget.item.title,
description: widget.item.contents.first.text,
timeToRead: widget.item.timeToRead,
image: widget.item.image,
forManagers: widget.item.forManagers,
categories: widget.item.categories,
createdAt: widget.item.createdAt,
),
'type': 'می‌خواهم بیشتر بدانم'
},
);
},
),
],
], ],
), ),
title: 'موارد بیشتر', title: 'موارد بیشتر',

View File

@ -73,7 +73,7 @@ class NewsOverview extends StatelessWidget {
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
DidvanText( DidvanText(
' - ' + DateTimeUtils.momentGenerator(news.createdAt), ' - ${DateTimeUtils.momentGenerator(news.createdAt)}',
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
], ],

View File

@ -1,7 +1,6 @@
import 'dart:developer'; 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/constants/assets.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';
@ -14,12 +13,9 @@ import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/storage/storage.dart'; 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_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_svg/flutter_svg.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;
@ -28,7 +24,7 @@ class Splash extends StatefulWidget {
const Splash({Key? key}) : super(key: key); const Splash({Key? key}) : super(key: key);
@override @override
_SplashState createState() => _SplashState(); State<Splash> createState() => _SplashState();
} }
class _SplashState extends State<Splash> { class _SplashState extends State<Splash> {

View File

@ -25,7 +25,7 @@ class AnimatedVisibility extends StatefulWidget {
}) : super(key: key); }) : super(key: key);
@override @override
_AnimatedVisibilityState createState() => _AnimatedVisibilityState(); State<AnimatedVisibility> createState() => _AnimatedVisibilityState();
} }
class _AnimatedVisibilityState extends State<AnimatedVisibility> class _AnimatedVisibilityState extends State<AnimatedVisibility>

View File

@ -9,7 +9,6 @@ import 'package:didvan/routes/routes.dart';
import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/utils/action_sheet.dart';
import 'package:didvan/utils/date_time.dart'; import 'package:didvan/utils/date_time.dart';
import 'package:didvan/views/home/direct/widgets/audio_widget.dart'; import 'package:didvan/views/home/direct/widgets/audio_widget.dart';
import 'package:didvan/views/home/widgets/audio/audio_slider.dart';
import 'package:didvan/views/home/widgets/overview/multitype.dart'; import 'package:didvan/views/home/widgets/overview/multitype.dart';
import 'package:didvan/views/home/widgets/tag_item.dart'; import 'package:didvan/views/home/widgets/tag_item.dart';
import 'package:didvan/views/widgets/animated_visibility.dart'; import 'package:didvan/views/widgets/animated_visibility.dart';
@ -387,7 +386,7 @@ class _DidvanPageViewState extends State<DidvanPageView> {
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
DidvanText( DidvanText(
' - ' + DateTimeUtils.momentGenerator(item.createdAt), ' - ${DateTimeUtils.momentGenerator(item.createdAt)}',
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
], ],
@ -400,7 +399,7 @@ class _DidvanPageViewState extends State<DidvanPageView> {
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
DidvanText( DidvanText(
' - ' + DateTimeUtils.momentGenerator(item.createdAt), ' - ${DateTimeUtils.momentGenerator(item.createdAt)}',
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
), ),
], ],

View File

@ -3,7 +3,6 @@ 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';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
class StateHandler<T extends CoreProvier> extends StatelessWidget { class StateHandler<T extends CoreProvier> extends StatelessWidget {
final T state; final T state;