diff --git a/.fandogh/fandogh.yaml b/.fandogh/fandogh.yaml index 039b85b..ba1302d 100644 --- a/.fandogh/fandogh.yaml +++ b/.fandogh/fandogh.yaml @@ -3,7 +3,7 @@ name: app-test spec: allow_http: false disable_default_domains: true - image: app:2.5.2.23 + image: app:2.6.0.24 image_pull_policy: IfNotPresent path: / replicas: 1 diff --git a/android/build.gradle b/android/build.gradle index 125594d..6e49330 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.4.1' classpath 'com.google.gms:google-services:4.3.10' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index cc5527d..02e5f58 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip diff --git a/lib/assets/icons/progress-radar.svg b/lib/assets/icons/progress-radar.svg new file mode 100644 index 0000000..208d29e --- /dev/null +++ b/lib/assets/icons/progress-radar.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/assets/icons/risk-radar.svg b/lib/assets/icons/risk-radar.svg new file mode 100644 index 0000000..bc6d5aa --- /dev/null +++ b/lib/assets/icons/risk-radar.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/assets/icons/startup-radar.svg b/lib/assets/icons/startup-radar.svg new file mode 100644 index 0000000..c592d5b --- /dev/null +++ b/lib/assets/icons/startup-radar.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/assets/icons/strategic-radar.svg b/lib/assets/icons/strategic-radar.svg new file mode 100644 index 0000000..2a9af2d --- /dev/null +++ b/lib/assets/icons/strategic-radar.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/assets/icons/tech-radar.svg b/lib/assets/icons/tech-radar.svg new file mode 100644 index 0000000..9bb3266 --- /dev/null +++ b/lib/assets/icons/tech-radar.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/constants/assets.dart b/lib/constants/assets.dart index 48283e4..dcfd1aa 100644 --- a/lib/constants/assets.dart +++ b/lib/constants/assets.dart @@ -10,6 +10,14 @@ class Assets { static const String _baseAnimationsPath = '$_basePath/animations'; static const String _baseRecordsPath = '$_baseImagesPath/records'; static const String _baseLogosPath = '$_baseImagesPath/logos'; + static const String _baseIconsPath = '$_basePath/icons'; + + static const String progressRadarIcon = '$_baseIconsPath/progress-radar.svg'; + static const String startupRadarIcon = '$_baseIconsPath/startup-radar.svg'; + static const String strategicRadarIcon = + '$_baseIconsPath/strategic-radar.svg'; + static const String techRadarIcon = '$_baseIconsPath/tech-radar.svg'; + static const String riskRadarIcon = '$_baseIconsPath/risk-radar.svg'; static String get verticalLogoWithText => '$_baseLogosPath/logo-vertical-$_themeSuffix.svg'; diff --git a/lib/views/home/settings/settings.dart b/lib/views/home/settings/settings.dart index 49d9759..24f7813 100644 --- a/lib/views/home/settings/settings.dart +++ b/lib/views/home/settings/settings.dart @@ -27,7 +27,6 @@ class Settings extends StatelessWidget { children: [ Consumer( builder: (context, themeProvider, child) => LogoAppBar( - hasExtraPadding: false, key: UniqueKey(), ), ), diff --git a/lib/views/home/studio/studio.dart b/lib/views/home/studio/studio.dart index b6fdfd0..7e13e10 100644 --- a/lib/views/home/studio/studio.dart +++ b/lib/views/home/studio/studio.dart @@ -5,7 +5,6 @@ import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; -import 'package:didvan/routes/routes.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/views/home/studio/studio_state.dart'; import 'package:didvan/views/home/studio/widgets/slider.dart'; @@ -47,25 +46,7 @@ class _StudioState extends State { return Consumer( builder: (context, state, child) => CustomScrollView( slivers: [ - SliverToBoxAdapter( - child: Row( - children: [ - const LogoAppBar(), - Padding( - padding: EdgeInsets.only( - top: MediaQuery.of(context).padding.top, - ), - child: DidvanIconButton( - icon: DidvanIcons.bookmark_regular, - onPressed: () => Navigator.of(context).pushNamed( - Routes.filteredBookmarks, - arguments: {'type': state.type, 'onDeleted': (_) {}}, - ), - ), - ), - ], - ), - ), + const SliverToBoxAdapter(child: LogoAppBar()), const SliverToBoxAdapter( child: StudioTabBar(), ), diff --git a/lib/views/home/widgets/logo_app_bar.dart b/lib/views/home/widgets/logo_app_bar.dart index 50f0bfc..c935b8f 100644 --- a/lib/views/home/widgets/logo_app_bar.dart +++ b/lib/views/home/widgets/logo_app_bar.dart @@ -1,26 +1,135 @@ +import 'package:didvan/config/theme_data.dart'; +import 'package:didvan/constants/assets.dart'; +import 'package:didvan/models/view/action_sheet_data.dart'; +import 'package:didvan/utils/action_sheet.dart'; +import 'package:didvan/views/widgets/didvan/icon_button.dart'; +import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/logos/didvan_vertical_logo.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:url_launcher/url_launcher_string.dart'; class LogoAppBar extends StatelessWidget { final String? type; - final bool hasExtraPadding; - const LogoAppBar({Key? key, this.hasExtraPadding = true, this.type}) - : super(key: key); + const LogoAppBar({Key? key, this.type}) : super(key: key); @override Widget build(BuildContext context) { final MediaQueryData d = MediaQuery.of(context); - final double extraPadding = hasExtraPadding ? 0 : 16; return Container( margin: EdgeInsets.only(top: d.padding.top), - padding: EdgeInsets.only( - left: (type == null ? 140 : 0) - extraPadding, - top: 16 - extraPadding, - bottom: 16 - extraPadding, - right: 16 - extraPadding, - ), + padding: const EdgeInsets.all(16), alignment: Alignment.centerRight, - child: DidvanHorizontalLogo(type: type), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + DidvanHorizontalLogo(type: type), + DidvanIconButton( + icon: Icons.menu, + size: 32, + onPressed: () => _handleMenuOpen(context), + ), + ], + ), + ); + } + + void _handleMenuOpen(BuildContext context) { + ActionSheetUtils.showBottomSheet( + data: ActionSheetData( + content: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset( + Assets.strategicRadarIcon, + width: 48, + height: 48, + ), + const SizedBox(width: 4), + DidvanText( + 'سامانه رادارهای استراتژیک', + style: Theme.of(context).textTheme.titleMedium, + ), + ], + ), + const SizedBox(height: 16), + _BottomSheetItem( + icon: Assets.progressRadarIcon, + title: 'رادار روند', + enabled: true, + onTap: () { + launchUrlString( + 'https://trend.irfartak.com/', + mode: LaunchMode.inAppWebView, + ); + }, + ), + const SizedBox(height: 16), + _BottomSheetItem( + icon: Assets.techRadarIcon, + title: 'رادار تکنولوژی', + onTap: () {}, + ), + const SizedBox(height: 16), + _BottomSheetItem( + icon: Assets.riskRadarIcon, + title: 'رادار ریسک', + onTap: () {}, + ), + const SizedBox(height: 16), + _BottomSheetItem( + icon: Assets.startupRadarIcon, + title: 'رادار استارت‌آپ', + onTap: () {}, + ), + ], + ), + hasConfirmButton: false, + hasDismissButton: false, + ), + ); + } +} + +class _BottomSheetItem extends StatelessWidget { + final String icon; + final String title; + final bool enabled; + final VoidCallback onTap; + const _BottomSheetItem({ + required this.icon, + required this.title, + this.enabled = false, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: enabled ? onTap : null, + child: Container( + color: Colors.transparent, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset( + icon, + color: enabled + ? Theme.of(context).colorScheme.title + : Theme.of(context).colorScheme.disabledText, + ), + const SizedBox(width: 8), + DidvanText( + title, + color: enabled + ? Theme.of(context).colorScheme.title + : Theme.of(context).colorScheme.disabledText, + ), + ], + ), + ), ); } } diff --git a/pubspec.yaml b/pubspec.yaml index d264f9b..9967311 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: 2.5.2+23 +version: 2.6.0+24 environment: sdk: ">=2.17.0 <3.0.0" @@ -97,6 +97,7 @@ flutter: - lib/assets/images/themes/ - lib/assets/images/records/ - lib/assets/images/empty_states/ + - lib/assets/icons/ - lib/assets/animations/ # An image asset can refer to one or more resolution-specific "variants", see