From a49b1e06211e49594999c8bc83f87d46da71a2a3 Mon Sep 17 00:00:00 2001 From: AmirrezaChegini Date: Sat, 27 Sep 2025 09:04:41 +0330 Subject: [PATCH 1/2] fix: intro page --- assets/images/language.svg | 66 ++++++++++++++ assets/images/music_off.svg | 88 +++++++++---------- assets/images/music_on.svg | 85 +++++++++--------- assets/images/theme.svg | 52 +++++------ lib/common_ui/resources/my_assets.dart | 1 + .../intro/presentation/ui/intro_page.dart | 28 ++++-- 6 files changed, 194 insertions(+), 126 deletions(-) create mode 100644 assets/images/language.svg diff --git a/assets/images/language.svg b/assets/images/language.svg new file mode 100644 index 0000000..807ba35 --- /dev/null +++ b/assets/images/language.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/music_off.svg b/assets/images/music_off.svg index 6c8ad5e..a8f7e90 100644 --- a/assets/images/music_off.svg +++ b/assets/images/music_off.svg @@ -1,32 +1,20 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - + @@ -34,40 +22,44 @@ - + - + - - + + - - - + + + - - - + + + - - - + + + + + + + + + + + - - - - - - + + + + + - - - diff --git a/assets/images/music_on.svg b/assets/images/music_on.svg index c53351d..3beefd9 100644 --- a/assets/images/music_on.svg +++ b/assets/images/music_on.svg @@ -1,60 +1,57 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - + - - + + - - + + - - - + + + - - - + + + + + + + - - - + + + + + + + - - - - - - + + + + + - - + + diff --git a/assets/images/theme.svg b/assets/images/theme.svg index 93f83cf..dc27d27 100644 --- a/assets/images/theme.svg +++ b/assets/images/theme.svg @@ -1,51 +1,51 @@ - - - - + + + + - - - - - - - + + + + + + + - + - - + + - - + + - + - - + + - + - + - + - + - + @@ -53,8 +53,8 @@ - - + + diff --git a/lib/common_ui/resources/my_assets.dart b/lib/common_ui/resources/my_assets.dart index 1c8d553..157d386 100644 --- a/lib/common_ui/resources/my_assets.dart +++ b/lib/common_ui/resources/my_assets.dart @@ -15,4 +15,5 @@ class MyAssets { static const String whatsapp = 'assets/images/whatsapp.svg'; static const String youtube = 'assets/images/youtube.svg'; static const String instagram = 'assets/images/instagram.svg'; + static const String language = 'assets/images/language.svg'; } \ No newline at end of file diff --git a/lib/features/intro/presentation/ui/intro_page.dart b/lib/features/intro/presentation/ui/intro_page.dart index d2b6954..faaa1ee 100644 --- a/lib/features/intro/presentation/ui/intro_page.dart +++ b/lib/features/intro/presentation/ui/intro_page.dart @@ -26,6 +26,7 @@ class IntroPage extends StatelessWidget { child: Stack( alignment: Alignment.center, children: [ + _music(), _name(), _bottomBtns(context), ], @@ -35,12 +36,23 @@ class IntroPage extends StatelessWidget { ); } + Positioned _music() { + return Positioned( + top: 36, + right: 16, + child: MyImage( + image: MyAssets.musicOn, + ), + ); + } + + Positioned _name() { return Positioned( - top: 130, + top: 146, child: MyImage( image: MyAssets.hadiHoda, - size: 220, + size: 232, fit: BoxFit.cover, ), ); @@ -48,20 +60,20 @@ class IntroPage extends StatelessWidget { Positioned _bottomBtns(BuildContext context) { return Positioned( - bottom: 20, - left: 20, - right: 20, + bottom: 40, + left: 16, + right: 16, child: Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - MyImage(image: MyAssets.musicOn, size: 60), - InkWell(child: MyImage(image: MyAssets.start, size: 80), + MyImage(image: MyAssets.language), + InkWell(child: MyImage(image: MyAssets.start, size: 90), onTap: () { showAboutUsDialog(context: context); }, ), - MyImage(image: MyAssets.theme, size: 60), + MyImage(image: MyAssets.theme), ], ), ); From d1f2889836e6e800b6f53d0171aac78f6fa14eff Mon Sep 17 00:00:00 2001 From: AmirrezaChegini Date: Sat, 27 Sep 2025 09:51:48 +0330 Subject: [PATCH 2/2] fix: about us dialog --- assets/images/dialog.svg | 14 --- assets/images/khadije_logo.png | Bin 0 -> 16474 bytes assets/images/new_horizon.svg | 37 ++++++++ lib/common_ui/resources/my_assets.dart | 3 +- lib/core/routers/my_routes.dart | 2 - .../about_us_dialog.dart | 73 +++++++--------- .../about_us_dialog/styles/background.dart | 80 ++++++++++++++++++ .../intro/presentation/ui/intro_page.dart | 2 +- lib/l10n/app_en.arb | 2 +- lib/l10n/app_localizations.dart | 2 +- lib/l10n/app_localizations_en.dart | 2 +- 11 files changed, 154 insertions(+), 63 deletions(-) delete mode 100644 assets/images/dialog.svg create mode 100644 assets/images/khadije_logo.png create mode 100644 assets/images/new_horizon.svg rename lib/core/widgets/{ => about_us_dialog}/about_us_dialog.dart (62%) create mode 100644 lib/core/widgets/about_us_dialog/styles/background.dart diff --git a/assets/images/dialog.svg b/assets/images/dialog.svg deleted file mode 100644 index 0b761e0..0000000 --- a/assets/images/dialog.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/assets/images/khadije_logo.png b/assets/images/khadije_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6084c387ad1d82ff8f88bd9e684d684816b3535e GIT binary patch literal 16474 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/common_ui/resources/my_assets.dart b/lib/common_ui/resources/my_assets.dart index 157d386..8fc0a00 100644 --- a/lib/common_ui/resources/my_assets.dart +++ b/lib/common_ui/resources/my_assets.dart @@ -5,7 +5,6 @@ class MyAssets { static const String backgroundIntro = 'assets/images/background_intro.png'; static const String closeBtn = 'assets/images/close_btn.svg'; - static const String dialog = 'assets/images/dialog.svg'; static const String hadiHoda = 'assets/images/hadi_hoda.png'; static const String musicOff = 'assets/images/music_off.svg'; static const String musicOn = 'assets/images/music_on.svg'; @@ -16,4 +15,6 @@ class MyAssets { static const String youtube = 'assets/images/youtube.svg'; static const String instagram = 'assets/images/instagram.svg'; static const String language = 'assets/images/language.svg'; + static const String newHorizon = 'assets/images/new_horizon.svg'; + static const String khadijeLogo = 'assets/images/khadije_logo.png'; } \ No newline at end of file diff --git a/lib/core/routers/my_routes.dart b/lib/core/routers/my_routes.dart index 63a185b..f6b6730 100644 --- a/lib/core/routers/my_routes.dart +++ b/lib/core/routers/my_routes.dart @@ -7,9 +7,7 @@ import 'package:hadi_hoda_flutter/init_bindings.dart'; class Routes { static const Routes _i = Routes._internal(); - const Routes._internal(); - factory Routes() => _i; static const String introPage = '/intro_page'; diff --git a/lib/core/widgets/about_us_dialog.dart b/lib/core/widgets/about_us_dialog/about_us_dialog.dart similarity index 62% rename from lib/core/widgets/about_us_dialog.dart rename to lib/core/widgets/about_us_dialog/about_us_dialog.dart index ebdb6dc..66966b0 100644 --- a/lib/core/widgets/about_us_dialog.dart +++ b/lib/core/widgets/about_us_dialog/about_us_dialog.dart @@ -1,14 +1,13 @@ import 'dart:ui'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hadi_hoda_flutter/common_ui/resources/my_assets.dart'; -import 'package:hadi_hoda_flutter/common_ui/resources/my_spaces.dart'; import 'package:hadi_hoda_flutter/common_ui/theme/my_theme.dart'; -import 'package:hadi_hoda_flutter/core/utils/gap.dart'; import 'package:hadi_hoda_flutter/core/utils/my_image.dart'; import 'package:hadi_hoda_flutter/core/utils/my_localization.dart'; -import 'package:hadi_hoda_flutter/core/utils/screen_size.dart'; +import 'package:hadi_hoda_flutter/core/widgets/about_us_dialog/styles/background.dart'; Future showAboutUsDialog({required BuildContext context}) async { await showDialog( @@ -29,34 +28,14 @@ class AboutUsDialog extends StatelessWidget { body: BackdropFilter( filter: ImageFilter.blur(sigmaX: 6, sigmaY: 6), child: Center( - child: SizedBox( - height: context.widthScreen, - width: context.widthScreen - 20, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), child: Stack( - alignment: AlignmentDirectional.center, clipBehavior: Clip.none, children: [ - MyImage(image: MyAssets.dialog), - Positioned( - top: 10, - right: 30, - child: GestureDetector( - onTap: () { - Navigator.pop(context); - }, - child: MyImage(image: MyAssets.closeBtn, size: 40), - ), - ), - Padding( - padding: EdgeInsets.only( - top: 50, - left: 35, - right: 35, - bottom: 60, - ), + AboutUSDialogBackground( child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( context.translate.about_us, @@ -66,32 +45,42 @@ class AboutUsDialog extends StatelessWidget { fontWeight: FontWeight.w600, ), ), - MySpaces.s14.gapHeight, - Expanded( - child: SingleChildScrollView( - child: Text( - context.translate.about_us_desc, - style: GoogleFonts.marhey( - color: Color(0XFF322386), - fontSize: 15, - fontWeight: FontWeight.w500, - ), - ), + Text( + context.translate.about_us_desc, + style: GoogleFonts.marhey( + color: Color(0XFF494178), + fontSize: 16, + fontWeight: FontWeight.w500, ), ), + MyImage( + image: MyAssets.newHorizon, + ), + MyImage( + image: MyAssets.khadijeLogo, + ), Row( mainAxisAlignment: MainAxisAlignment.center, spacing: 20, children: [ - MyImage(image: MyAssets.facebook, size: 40), - MyImage(image: MyAssets.instagram, size: 40), - MyImage(image: MyAssets.whatsapp, size: 40), - MyImage(image: MyAssets.youtube, size: 40), + MyImage(image: MyAssets.facebook, size: 33), + MyImage(image: MyAssets.instagram, size: 33), + MyImage(image: MyAssets.whatsapp, size: 33), + MyImage(image: MyAssets.youtube, size: 33), ], ), ], ), ), + Positioned( + right: 30, + top: -12, + child: GestureDetector( + onTap: context.pop, + behavior: HitTestBehavior.opaque, + child: MyImage(image: MyAssets.closeBtn, size: 40), + ), + ), ], ), ), diff --git a/lib/core/widgets/about_us_dialog/styles/background.dart b/lib/core/widgets/about_us_dialog/styles/background.dart new file mode 100644 index 0000000..cb434cf --- /dev/null +++ b/lib/core/widgets/about_us_dialog/styles/background.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:hadi_hoda_flutter/core/utils/screen_size.dart'; + +class AboutUSDialogBackground extends StatelessWidget { + const AboutUSDialogBackground({super.key, this.child}); + + final Widget? child; + + @override + Widget build(BuildContext context) { + return ClipPath( + clipper: _BottomShapeClipper(), + child: Container( + width: context.widthScreen, + height: 525, + padding: EdgeInsets.all(30), + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [ + Color(0xFFCADCFF), + Colors.white, + Colors.white, + Colors.white, + ], + ), + ), + child: child, + ), + ); + } +} + +class _BottomShapeClipper extends CustomClipper { + @override + Path getClip(Size size) { + final path = Path(); + path.moveTo(size.width * 0.0296831, size.height * 0.0431190); + path.cubicTo( + size.width * -0.0046256, + size.height * 0.0736941, + size.width * -0.0099023, + size.height * 0.932004, + size.width * 0.0201127, + size.height * 0.971318, + ); + path.cubicTo( + size.width * 0.0476063, + size.height * 1.00783, + size.width * 0.908328, + size.height * 1.01074, + size.width * 0.962267, + size.height * 0.972775, + ); + path.cubicTo( + size.width * 1.01620, + size.height * 0.934810, + size.width * 1.00525, + size.height * 0.0573423, + size.width * 0.955130, + size.height * 0.0222874, + ); + path.cubicTo( + size.width * 0.905007, + size.height * -0.0127694, + size.width * 0.0857731, + size.height * -0.0135838, + size.width * 0.0296831, + size.height * 0.0431190, + ); + path.close(); + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) { + return true; + } +} diff --git a/lib/features/intro/presentation/ui/intro_page.dart b/lib/features/intro/presentation/ui/intro_page.dart index faaa1ee..bd96a4d 100644 --- a/lib/features/intro/presentation/ui/intro_page.dart +++ b/lib/features/intro/presentation/ui/intro_page.dart @@ -3,7 +3,7 @@ import 'package:hadi_hoda_flutter/common_ui/resources/my_assets.dart'; import 'package:hadi_hoda_flutter/common_ui/theme/my_theme.dart'; import 'package:hadi_hoda_flutter/core/utils/my_image.dart'; import 'package:hadi_hoda_flutter/core/utils/screen_size.dart'; -import 'package:hadi_hoda_flutter/core/widgets/about_us_dialog.dart'; +import 'package:hadi_hoda_flutter/core/widgets/about_us_dialog/about_us_dialog.dart'; class IntroPage extends StatelessWidget { const IntroPage({super.key}); diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 9e22152..41f04cd 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1,4 +1,4 @@ { "about_us": "About us", - "about_us_desc" : "Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build award-winning interactive experiences across apps, games, websites, products, and vehicles." + "about_us_desc" : "Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build." } \ No newline at end of file diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 76fe3e1..b1de57e 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -103,7 +103,7 @@ abstract class AppLocalizations { /// No description provided for @about_us_desc. /// /// In en, this message translates to: - /// **'Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build award-winning interactive experiences across apps, games, websites, products, and vehicles.'** + /// **'Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build.'** String get about_us_desc; } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index eee0965..6967cb9 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -13,5 +13,5 @@ class AppLocalizationsEn extends AppLocalizations { @override String get about_us_desc => - 'Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build award-winning interactive experiences across apps, games, websites, products, and vehicles.'; + 'Rive combines an interactive design tool, a new stateful graphics format, a lightweight multi-platform runtime, and a blazing-fast vector renderer. \nThis end-to-end pipeline brings interfaces to life with motion. It gives designers and devs the tools to build.'; }