diff --git a/assets/icons/flags/de_flag.svg b/assets/flags/de_flag.svg similarity index 100% rename from assets/icons/flags/de_flag.svg rename to assets/flags/de_flag.svg diff --git a/assets/icons/flags/en_flag.svg b/assets/flags/en_flag.svg similarity index 100% rename from assets/icons/flags/en_flag.svg rename to assets/flags/en_flag.svg diff --git a/assets/icons/flags/es_flag.svg b/assets/flags/es_flag.svg similarity index 100% rename from assets/icons/flags/es_flag.svg rename to assets/flags/es_flag.svg diff --git a/assets/icons/flags/fi_flag.svg b/assets/flags/fi_flag.svg similarity index 100% rename from assets/icons/flags/fi_flag.svg rename to assets/flags/fi_flag.svg diff --git a/assets/icons/flags/fr_flag.svg b/assets/flags/fr_flag.svg similarity index 100% rename from assets/icons/flags/fr_flag.svg rename to assets/flags/fr_flag.svg diff --git a/assets/icons/flags/hi_flag.svg b/assets/flags/hi_flag.svg similarity index 100% rename from assets/icons/flags/hi_flag.svg rename to assets/flags/hi_flag.svg diff --git a/assets/icons/flags/is_flag.svg b/assets/flags/is_flag.svg similarity index 100% rename from assets/icons/flags/is_flag.svg rename to assets/flags/is_flag.svg diff --git a/assets/icons/flags/it_flag.svg b/assets/flags/it_flag.svg similarity index 100% rename from assets/icons/flags/it_flag.svg rename to assets/flags/it_flag.svg diff --git a/assets/icons/flags/ja_flag.svg b/assets/flags/ja_flag.svg similarity index 100% rename from assets/icons/flags/ja_flag.svg rename to assets/flags/ja_flag.svg diff --git a/assets/icons/flags/nl_flag.svg b/assets/flags/nl_flag.svg similarity index 100% rename from assets/icons/flags/nl_flag.svg rename to assets/flags/nl_flag.svg diff --git a/assets/icons/flags/pt_flag.svg b/assets/flags/pt_flag.svg similarity index 100% rename from assets/icons/flags/pt_flag.svg rename to assets/flags/pt_flag.svg diff --git a/assets/icons/flags/sk_flag.svg b/assets/flags/sk_flag.svg similarity index 100% rename from assets/icons/flags/sk_flag.svg rename to assets/flags/sk_flag.svg diff --git a/assets/icons/flags/sv_flag.svg b/assets/flags/sv_flag.svg similarity index 100% rename from assets/icons/flags/sv_flag.svg rename to assets/flags/sv_flag.svg diff --git a/lib/app/constants/app_constants.dart b/lib/app/constants/app_constants.dart index f85bf4f..9333763 100644 --- a/lib/app/constants/app_constants.dart +++ b/lib/app/constants/app_constants.dart @@ -15,6 +15,9 @@ class AppConstants { static int personId = 0; static const bool debugRequest = false; + static Uri myGithubPage = Uri.parse('https://github.com/dherediat97'); + + //PREFERENCES KEYS static const languageKey = 'languageCode'; static const themeModeKey = 'themeMode'; } diff --git a/lib/app/constants/app_fonts.dart b/lib/app/constants/app_fonts.dart index 3dc79ac..4ee91a7 100644 --- a/lib/app/constants/app_fonts.dart +++ b/lib/app/constants/app_fonts.dart @@ -1,9 +1,10 @@ -import 'package:film_flu/gen/fonts.gen.dart'; +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; class AppFonts { - static String primaryFont = FontFamily.ysabeauInfant; - static String secondaryFont = FontFamily.lilitaOne; - static String tertiaryFont = FontFamily.shadowsIntoLight; + static String primaryFont = 'Ysabeau'; + static String secondaryFont = 'LilitaOne'; + static String tertiaryFont = 'Shadows Into Light'; const AppFonts( primaryFont, @@ -11,3 +12,70 @@ class AppFonts { tertiaryFont, ); } + +TextTheme createTextTheme( + BuildContext context, String bodyFontString, String displayFontString) { + TextTheme baseTextTheme = Theme.of(context).textTheme; + + TextTheme titleTextTheme = + GoogleFonts.getTextTheme(bodyFontString, baseTextTheme); + + TextTheme bodyTextTheme = + GoogleFonts.getTextTheme(bodyFontString, baseTextTheme); + + TextTheme displayTextTheme = + GoogleFonts.getTextTheme(displayFontString, baseTextTheme); + + TextTheme textTheme = displayTextTheme.copyWith( + displayLarge: displayTextTheme.displayLarge?.copyWith( + fontSize: 22, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, + ), + displayMedium: displayTextTheme.displayMedium?.copyWith( + fontSize: 15, + color: Theme.of(context).colorScheme.secondary, + ), + displaySmall: displayTextTheme.displaySmall?.copyWith( + fontSize: 12, + color: Theme.of(context).colorScheme.secondary, + ), + bodyLarge: bodyTextTheme.bodyLarge?.copyWith( + fontSize: 24, + color: Theme.of(context).colorScheme.secondary, + ), + bodyMedium: bodyTextTheme.bodyMedium?.copyWith( + fontSize: 15, + color: Theme.of(context).colorScheme.secondary, + ), + bodySmall: bodyTextTheme.bodySmall?.copyWith( + fontSize: 15, + color: Theme.of(context).colorScheme.secondary, + ), + labelLarge: bodyTextTheme.labelLarge?.copyWith( + fontSize: 12, + color: Theme.of(context).colorScheme.secondary, + ), + labelMedium: bodyTextTheme.labelMedium?.copyWith( + fontSize: 14, + color: Theme.of(context).colorScheme.secondary, + ), + labelSmall: bodyTextTheme.labelSmall?.copyWith( + fontSize: 14, + color: Theme.of(context).colorScheme.secondary, + ), + titleLarge: titleTextTheme.titleLarge?.copyWith( + fontSize: 40, + color: Theme.of(context).colorScheme.secondary, + ), + titleMedium: titleTextTheme.titleMedium?.copyWith( + fontSize: 14, + color: Theme.of(context).colorScheme.secondary, + ), + titleSmall: titleTextTheme.titleSmall?.copyWith( + fontSize: 16, + color: Theme.of(context).colorScheme.secondary, + ), + ); + return textTheme; +} diff --git a/lib/app/constants/app_theme.dart b/lib/app/constants/app_theme.dart index c602cfc..c5cf1c5 100644 --- a/lib/app/constants/app_theme.dart +++ b/lib/app/constants/app_theme.dart @@ -1,4 +1,3 @@ -import 'package:film_flu/app/constants/app_fonts.dart'; import 'package:flutter/material.dart'; class AppTheme { @@ -9,24 +8,24 @@ class AppTheme { static ColorScheme lightScheme() { return const ColorScheme( brightness: Brightness.light, - primary: Color(0xff970013), + primary: Color(0xffE6132B), surfaceTint: Color(0xffbe071d), - onPrimary: Color(0xffffffff), + onPrimary: Color(0xFFffffff), primaryContainer: Color(0xffd42029), - onPrimaryContainer: Color(0xffffffff), - secondary: Color(0xff970013), - onSecondary: Color(0xffffffff), + onPrimaryContainer: Color(0x8BF9F9F9), + secondary: Color(0x00010f0f), + onSecondary: Color(0xFFEAEAEB), secondaryContainer: Color(0xffd42029), - onSecondaryContainer: Color(0xffffffff), - tertiary: Color(0xff970013), - onTertiary: Color(0xffffffff), + onSecondaryContainer: Color(0x8BF9F9F9), + tertiary: Color(0xffE6132B), + onTertiary: Color(0x8BF9F9F9), tertiaryContainer: Color(0xffd42029), - onTertiaryContainer: Color(0xffffffff), + onTertiaryContainer: Color(0x8BF9F9F9), error: Color(0xff320004), - onError: Color(0xffffffff), + onError: Color(0x8BF9F9F9), errorContainer: Color(0xff670f17), onErrorContainer: Color(0xffffacaa), - surface: Color(0xfff9f9f9), + surface: Color(0x8BF9F9F9), onSurface: Color(0xff1b1b1b), onSurfaceVariant: Color(0xff444748), outline: Color(0xff747878), @@ -49,7 +48,7 @@ class AppTheme { onTertiaryFixedVariant: Color(0xff930012), surfaceDim: Color(0xffdadada), surfaceBright: Color(0xfff9f9f9), - surfaceContainerLowest: Color(0xffffffff), + surfaceContainerLowest: Color(0x8BF9F9F9), surfaceContainerLow: Color(0xfff3f3f3), surfaceContainer: Color(0xffeeeeee), surfaceContainerHigh: Color(0xffe8e8e8), @@ -64,26 +63,26 @@ class AppTheme { static ColorScheme lightMediumContrastScheme() { return const ColorScheme( brightness: Brightness.light, - primary: Color(0xff8b0010), + primary: Color(0xff4d0006), surfaceTint: Color(0xffbe071d), - onPrimary: Color(0xffffffff), + onPrimary: Color(0x8BF9F9F9), primaryContainer: Color(0xffd42029), - onPrimaryContainer: Color(0xffffffff), - secondary: Color(0xff8b0010), - onSecondary: Color(0xffffffff), + onPrimaryContainer: Color(0x8BF9F9F9), + secondary: Color(0x00010f0f), + onSecondary: Color(0x8BF9F9F9), secondaryContainer: Color(0xffd42029), - onSecondaryContainer: Color(0xffffffff), + onSecondaryContainer: Color(0x8BF9F9F9), tertiary: Color(0xff8b0010), - onTertiary: Color(0xffffffff), + onTertiary: Color(0x8BF9F9F9), tertiaryContainer: Color(0xffd42029), - onTertiaryContainer: Color(0xffffffff), + onTertiaryContainer: Color(0x8BF9F9F9), error: Color(0xff320004), - onError: Color(0xffffffff), + onError: Color(0x8BF9F9F9), errorContainer: Color(0xff670f17), onErrorContainer: Color(0xffffeceb), surface: Color(0xfff9f9f9), - onSurface: Color(0xff1b1b1b), - onSurfaceVariant: Color(0xff404344), + onSurface: Color(0x8BF9F9F9), + onSurfaceVariant: Color(0x00010f0f), outline: Color(0xff5c6060), outlineVariant: Color(0xff787b7c), shadow: Color(0x00010f0f), @@ -91,20 +90,20 @@ class AppTheme { inverseSurface: Color(0xff303030), inversePrimary: Color(0xffffb3ad), primaryFixed: Color(0xffdf2a30), - onPrimaryFixed: Color(0xffffffff), + onPrimaryFixed: Color(0x8BF9F9F9), primaryFixedDim: Color(0xffbb021a), - onPrimaryFixedVariant: Color(0xffffffff), + onPrimaryFixedVariant: Color(0x8BF9F9F9), secondaryFixed: Color(0xffdf2a30), - onSecondaryFixed: Color(0xffffffff), + onSecondaryFixed: Color(0x8BF9F9F9), secondaryFixedDim: Color(0xffbb021a), - onSecondaryFixedVariant: Color(0xffffffff), + onSecondaryFixedVariant: Color(0x8BF9F9F9), tertiaryFixed: Color(0xffdf2a30), - onTertiaryFixed: Color(0xffffffff), + onTertiaryFixed: Color(0x8BF9F9F9), tertiaryFixedDim: Color(0xffbb021a), - onTertiaryFixedVariant: Color(0xffffffff), + onTertiaryFixedVariant: Color(0x8BF9F9F9), surfaceDim: Color(0xffdadada), surfaceBright: Color(0xfff9f9f9), - surfaceContainerLowest: Color(0xffffffff), + surfaceContainerLowest: Color(0x8BF9F9F9), surfaceContainerLow: Color(0xfff3f3f3), surfaceContainer: Color(0xffeeeeee), surfaceContainerHigh: Color(0xffe8e8e8), @@ -119,51 +118,51 @@ class AppTheme { static ColorScheme lightHighContrastScheme() { return const ColorScheme( brightness: Brightness.light, - primary: Color(0xff4d0005), - surfaceTint: Color(0xffbe071d), - onPrimary: Color(0xffffffff), - primaryContainer: Color(0xff8b0010), - onPrimaryContainer: Color(0xffffffff), - secondary: Color(0xff4d0005), - onSecondary: Color(0xffffffff), - secondaryContainer: Color(0xff8b0010), - onSecondaryContainer: Color(0xffffffff), - tertiary: Color(0xff4d0005), - onTertiary: Color(0xffffffff), - tertiaryContainer: Color(0xff8b0010), - onTertiaryContainer: Color(0xffffffff), - error: Color(0xff320004), - onError: Color(0xffffffff), - errorContainer: Color(0xff670f17), - onErrorContainer: Color(0xffffffff), - surface: Color(0xfff9f9f9), - onSurface: Color(0x00010f0f), + primary: Color(0xff4d0006), + surfaceTint: Color(0xffc0001f), + onPrimary: Color(0x8BF9F9F9), + primaryContainer: Color(0xff8b0013), + onPrimaryContainer: Color(0x8BF9F9F9), + secondary: Color(0x00010f0f), + onSecondary: Color(0x8BF9F9F9), + secondaryContainer: Color(0xff861119), + onSecondaryContainer: Color(0x8BF9F9F9), + tertiary: Color(0xff371b00), + onTertiary: Color(0x8BF9F9F9), + tertiaryContainer: Color(0xff663700), + onTertiaryContainer: Color(0x8BF9F9F9), + error: Color(0xff4e0002), + onError: Color(0x8BF9F9F9), + errorContainer: Color(0xff8c0009), + onErrorContainer: Color(0x8BF9F9F9), + surface: Color(0xfffdf8f7), + onSurface: Color(0xff000000), onSurfaceVariant: Color(0xff212525), outline: Color(0xff404344), outlineVariant: Color(0xff404344), - shadow: Color(0x00010f0f), - scrim: Color(0x00010f0f), - inverseSurface: Color(0xff303030), + shadow: Color(0xff000000), + scrim: Color(0xff000000), + inverseSurface: Color(0xff323030), inversePrimary: Color(0xffffe7e4), - primaryFixed: Color(0xff8b0010), - onPrimaryFixed: Color(0xffffffff), - primaryFixedDim: Color(0xff610008), - onPrimaryFixedVariant: Color(0xffffffff), - secondaryFixed: Color(0xff8b0010), - onSecondaryFixed: Color(0xffffffff), - secondaryFixedDim: Color(0xff610008), - onSecondaryFixedVariant: Color(0xffffffff), - tertiaryFixed: Color(0xff8b0010), - onTertiaryFixed: Color(0xffffffff), - tertiaryFixedDim: Color(0xff610008), - onTertiaryFixedVariant: Color(0xffffffff), - surfaceDim: Color(0xffdadada), - surfaceBright: Color(0xfff9f9f9), - surfaceContainerLowest: Color(0xffffffff), - surfaceContainerLow: Color(0xfff3f3f3), - surfaceContainer: Color(0xffeeeeee), - surfaceContainerHigh: Color(0xffe8e8e8), - surfaceContainerHighest: Color(0xffe2e2e2), + primaryFixed: Color(0xff8b0013), + onPrimaryFixed: Color(0x8BF9F9F9), + primaryFixedDim: Color(0xff61000a), + onPrimaryFixedVariant: Color(0x8BF9F9F9), + secondaryFixed: Color(0xff861119), + onSecondaryFixed: Color(0x8BF9F9F9), + secondaryFixedDim: Color(0xff61000a), + onSecondaryFixedVariant: Color(0x8BF9F9F9), + tertiaryFixed: Color(0xff663700), + onTertiaryFixed: Color(0x8BF9F9F9), + tertiaryFixedDim: Color(0xff462400), + onTertiaryFixedVariant: Color(0x8BF9F9F9), + surfaceDim: Color(0xffded9d8), + surfaceBright: Color(0xfffdf8f7), + surfaceContainerLowest: Color(0x8BF9F9F9), + surfaceContainerLow: Color(0xfff8f2f2), + surfaceContainer: Color(0xfff2edec), + surfaceContainerHigh: Color(0xffece7e6), + surfaceContainerHighest: Color(0xffe6e1e1), ); } @@ -174,51 +173,51 @@ class AppTheme { static ColorScheme darkScheme() { return const ColorScheme( brightness: Brightness.dark, - primary: Color(0xff680009), - surfaceTint: Color(0xff680009), - onPrimary: Color(0xff680009), - primaryContainer: Color(0xffc81422), - onPrimaryContainer: Color(0xffffffff), - secondary: Color(0xff680009), - onSecondary: Color(0xff680009), - secondaryContainer: Color(0xffc81422), - onSecondaryContainer: Color(0xffffffff), - tertiary: Color(0xff680009), - onTertiary: Color(0xff680009), - tertiaryContainer: Color(0xffc81422), - onTertiaryContainer: Color(0xffffffff), - error: Color(0xff680009), - onError: Color(0xff640c14), - errorContainer: Color(0xff460008), - onErrorContainer: Color(0xffff8584), - surface: Color(0xff131313), - onSurface: Color(0xffe2e2e2), + primary: Color(0xffd90024), + surfaceTint: Color(0xffd90024), + onPrimary: Color(0xff68000c), + primaryContainer: Color(0xffd90024), + onPrimaryContainer: Color(0x8BF9F9F9), + secondary: Color(0xFFFFFFFF), + onSecondary: Color(0xFFEAEAEB), + secondaryContainer: Color(0xff830d16), + onSecondaryContainer: Color(0xffffc9c5), + tertiary: Color(0xffffb878), + onTertiary: Color(0xff4c2700), + tertiaryContainer: Color(0xffa05900), + onTertiaryContainer: Color(0x8BF9F9F9), + error: Color(0xffffb4ab), + onError: Color(0xff690005), + errorContainer: Color(0xff93000a), + onErrorContainer: Color(0xffffdad6), + surface: Color(0xff141313), + onSurface: Color(0xffe6e1e1), onSurfaceVariant: Color(0xffc4c7c8), outline: Color(0xff8e9192), outlineVariant: Color(0xff444748), - shadow: Color(0x00010f0f), - scrim: Color(0x00010f0f), - inverseSurface: Color(0xffe2e2e2), - inversePrimary: Color(0xffbe071d), + shadow: Color(0xff000000), + scrim: Color(0xff000000), + inverseSurface: Color(0xffe6e1e1), + inversePrimary: Color(0xffc0001f), primaryFixed: Color(0xffffdad7), onPrimaryFixed: Color(0xff410004), - primaryFixedDim: Color(0xffffb3ad), - onPrimaryFixedVariant: Color(0xff930012), + primaryFixedDim: Color(0xffffb3ae), + onPrimaryFixedVariant: Color(0xff930015), secondaryFixed: Color(0xffffdad7), onSecondaryFixed: Color(0xff410004), - secondaryFixedDim: Color(0xffffb3ad), - onSecondaryFixedVariant: Color(0xff930012), - tertiaryFixed: Color(0xffffdad7), - onTertiaryFixed: Color(0xff410004), - tertiaryFixedDim: Color(0xffffb3ad), - onTertiaryFixedVariant: Color(0xff930012), - surfaceDim: Color(0xff131313), - surfaceBright: Color(0xff393939), - surfaceContainerLowest: Color(0xff0e0e0e), - surfaceContainerLow: Color(0xff1b1b1b), - surfaceContainer: Color(0xff1f1f1f), - surfaceContainerHigh: Color(0xff2a2a2a), - surfaceContainerHighest: Color(0xff353535), + secondaryFixedDim: Color(0xffffb3ae), + onSecondaryFixedVariant: Color(0xff8c161c), + tertiaryFixed: Color(0xffffdcc1), + onTertiaryFixed: Color(0xff2e1500), + tertiaryFixedDim: Color(0xffffb878), + onTertiaryFixedVariant: Color(0xff6c3a00), + surfaceDim: Color(0xff141313), + surfaceBright: Color(0xff3a3938), + surfaceContainerLowest: Color(0xff0f0e0e), + surfaceContainerLow: Color(0xff1c1b1b), + surfaceContainer: Color(0xff211f1f), + surfaceContainerHigh: Color(0xff2b2a29), + surfaceContainerHighest: Color(0xff363434), ); } @@ -247,8 +246,8 @@ class AppTheme { errorContainer: Color(0xffe36c6c), onErrorContainer: Color(0x00010f0f), surface: Color(0xff131313), - onSurface: Color(0xfffbfbfb), - onSurfaceVariant: Color(0xffc8cbcc), + onSurface: Color(0x8BF9F9F9), + onSurfaceVariant: Color(0x00010f0f), outline: Color(0xffa0a3a4), outlineVariant: Color(0xff808484), shadow: Color(0x00010f0f), @@ -302,8 +301,8 @@ class AppTheme { errorContainer: Color(0xffffb9b6), onErrorContainer: Color(0x00010f0f), surface: Color(0xff131313), - onSurface: Color(0xffffffff), - onSurfaceVariant: Color(0xfff8fbfc), + onSurface: Color(0x8BF9F9F9), + onSurfaceVariant: Color(0x00010f0f), outline: Color(0xffc8cbcc), outlineVariant: Color(0xffc8cbcc), shadow: Color(0x00010f0f), @@ -337,16 +336,30 @@ class AppTheme { } ThemeData theme(ColorScheme colorScheme) => ThemeData( - useMaterial3: true, brightness: colorScheme.brightness, colorScheme: colorScheme, - fontFamily: AppFonts.primaryFont, + bottomAppBarTheme: BottomAppBarTheme( + color: colorScheme.primary, + ), + appBarTheme: AppBarTheme( + color: colorScheme.primary, + ), textTheme: textTheme.apply( - bodyColor: colorScheme.onSurface, - displayColor: colorScheme.onSurface, - fontFamily: AppFonts.primaryFont, + bodyColor: colorScheme.onSecondary, + displayColor: colorScheme.primary, ), + primaryColor: colorScheme.surface, scaffoldBackgroundColor: colorScheme.surface, canvasColor: colorScheme.surface, + tabBarTheme: TabBarTheme( + indicatorColor: colorScheme.primaryContainer, + labelColor: colorScheme.primaryContainer, + dividerColor: Colors.transparent, + unselectedLabelColor: colorScheme.onSurfaceVariant, + indicatorSize: TabBarIndicatorSize.tab, + ), + scrollbarTheme: const ScrollbarThemeData( + thumbVisibility: WidgetStatePropertyAll(true), + ), ); } diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart deleted file mode 100644 index 93777ed..0000000 --- a/lib/gen/assets.gen.dart +++ /dev/null @@ -1,398 +0,0 @@ -/// GENERATED CODE - DO NOT MODIFY BY HAND -/// ***************************************************** -/// FlutterGen -/// ***************************************************** - -// coverage:ignore-file -// ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use - -import 'package:flutter/widgets.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:vector_graphics/vector_graphics.dart'; -import 'package:lottie/lottie.dart'; - -class $FontsGen { - const $FontsGen(); - - /// File path: fonts/LilitaOne-Regular.ttf - String get lilitaOneRegular => 'fonts/LilitaOne-Regular.ttf'; - - /// File path: fonts/ShadowsIntoLight-Regular.ttf - String get shadowsIntoLightRegular => 'fonts/ShadowsIntoLight-Regular.ttf'; - - /// File path: fonts/YsabeauInfant-Bold.ttf - String get ysabeauInfantBold => 'fonts/YsabeauInfant-Bold.ttf'; - - /// File path: fonts/YsabeauInfant-Italic.ttf - String get ysabeauInfantItalic => 'fonts/YsabeauInfant-Italic.ttf'; - - /// File path: fonts/YsabeauInfant-Regular.ttf - String get ysabeauInfantRegular => 'fonts/YsabeauInfant-Regular.ttf'; - - /// List of all assets - List get values => [ - lilitaOneRegular, - shadowsIntoLightRegular, - ysabeauInfantBold, - ysabeauInfantItalic, - ysabeauInfantRegular - ]; -} - -class $AssetsAnimationsGen { - const $AssetsAnimationsGen(); - - /// File path: assets/animations/splash_animation.json - LottieGenImage get splashAnimation => - const LottieGenImage('assets/animations/splash_animation.json'); - - /// List of all assets - List get values => [splashAnimation]; -} - -class $AssetsIconsGen { - const $AssetsIconsGen(); - - /// File path: assets/icons/actor_icon.svg - SvgGenImage get actorIcon => const SvgGenImage('assets/icons/actor_icon.svg'); - - /// File path: assets/icons/actor_profile_not_found.svg - SvgGenImage get actorProfileNotFound => - const SvgGenImage('assets/icons/actor_profile_not_found.svg'); - - /// File path: assets/icons/actress_icon.svg - SvgGenImage get actressIcon => - const SvgGenImage('assets/icons/actress_icon.svg'); - - /// File path: assets/icons/anime_boy.svg - SvgGenImage get animeBoy => const SvgGenImage('assets/icons/anime_boy.svg'); - - /// File path: assets/icons/anime_girl.svg - SvgGenImage get animeGirl => const SvgGenImage('assets/icons/anime_girl.svg'); - - /// Directory path: assets/icons/flags - $AssetsIconsFlagsGen get flags => const $AssetsIconsFlagsGen(); - - /// File path: assets/icons/full_heart.svg - SvgGenImage get fullHeart => const SvgGenImage('assets/icons/full_heart.svg'); - - /// File path: assets/icons/placeholder_image.svg - SvgGenImage get placeholderImage => - const SvgGenImage('assets/icons/placeholder_image.svg'); - - /// List of all assets - List get values => [ - actorIcon, - actorProfileNotFound, - actressIcon, - animeBoy, - animeGirl, - fullHeart, - placeholderImage - ]; -} - -class $AssetsImagesGen { - const $AssetsImagesGen(); - - /// File path: assets/images/logo.png - AssetGenImage get logoPng => const AssetGenImage('assets/images/logo.png'); - - /// File path: assets/images/logo.svg - SvgGenImage get logoSvg => const SvgGenImage('assets/images/logo.svg'); - - /// List of all assets - List get values => [logoPng, logoSvg]; -} - -class $AssetsIconsFlagsGen { - const $AssetsIconsFlagsGen(); - - /// File path: assets/icons/flags/de_flag.svg - SvgGenImage get deFlag => const SvgGenImage('assets/icons/flags/de_flag.svg'); - - /// File path: assets/icons/flags/en_flag.svg - SvgGenImage get enFlag => const SvgGenImage('assets/icons/flags/en_flag.svg'); - - /// File path: assets/icons/flags/es_flag.svg - SvgGenImage get esFlag => const SvgGenImage('assets/icons/flags/es_flag.svg'); - - /// File path: assets/icons/flags/fi_flag.svg - SvgGenImage get fiFlag => const SvgGenImage('assets/icons/flags/fi_flag.svg'); - - /// File path: assets/icons/flags/fr_flag.svg - SvgGenImage get frFlag => const SvgGenImage('assets/icons/flags/fr_flag.svg'); - - /// File path: assets/icons/flags/hi_flag.svg - SvgGenImage get hiFlag => const SvgGenImage('assets/icons/flags/hi_flag.svg'); - - /// File path: assets/icons/flags/is_flag.svg - SvgGenImage get isFlag => const SvgGenImage('assets/icons/flags/is_flag.svg'); - - /// File path: assets/icons/flags/it_flag.svg - SvgGenImage get itFlag => const SvgGenImage('assets/icons/flags/it_flag.svg'); - - /// File path: assets/icons/flags/ja_flag.svg - SvgGenImage get jaFlag => const SvgGenImage('assets/icons/flags/ja_flag.svg'); - - /// File path: assets/icons/flags/nl_flag.svg - SvgGenImage get nlFlag => const SvgGenImage('assets/icons/flags/nl_flag.svg'); - - /// File path: assets/icons/flags/pt_flag.svg - SvgGenImage get ptFlag => const SvgGenImage('assets/icons/flags/pt_flag.svg'); - - /// File path: assets/icons/flags/sk_flag.svg - SvgGenImage get skFlag => const SvgGenImage('assets/icons/flags/sk_flag.svg'); - - /// File path: assets/icons/flags/sv_flag.svg - SvgGenImage get svFlag => const SvgGenImage('assets/icons/flags/sv_flag.svg'); - - /// List of all assets - List get values => [ - deFlag, - enFlag, - esFlag, - fiFlag, - frFlag, - hiFlag, - isFlag, - itFlag, - jaFlag, - nlFlag, - ptFlag, - skFlag, - svFlag - ]; -} - -class Assets { - Assets._(); - - static const $AssetsAnimationsGen animations = $AssetsAnimationsGen(); - static const $AssetsIconsGen icons = $AssetsIconsGen(); - static const $AssetsImagesGen images = $AssetsImagesGen(); - static const $FontsGen fonts = $FontsGen(); -} - -class AssetGenImage { - const AssetGenImage( - this._assetName, { - this.size, - this.flavors = const {}, - }); - - final String _assetName; - - final Size? size; - final Set flavors; - - Image image({ - Key? key, - AssetBundle? bundle, - ImageFrameBuilder? frameBuilder, - ImageErrorWidgetBuilder? errorBuilder, - String? semanticLabel, - bool excludeFromSemantics = false, - double? scale, - double? width, - double? height, - Color? color, - Animation? opacity, - BlendMode? colorBlendMode, - BoxFit? fit, - AlignmentGeometry alignment = Alignment.center, - ImageRepeat repeat = ImageRepeat.noRepeat, - Rect? centerSlice, - bool matchTextDirection = false, - bool gaplessPlayback = false, - bool isAntiAlias = false, - String? package, - FilterQuality filterQuality = FilterQuality.low, - int? cacheWidth, - int? cacheHeight, - }) { - return Image.asset( - _assetName, - key: key, - bundle: bundle, - frameBuilder: frameBuilder, - errorBuilder: errorBuilder, - semanticLabel: semanticLabel, - excludeFromSemantics: excludeFromSemantics, - scale: scale, - width: width, - height: height, - color: color, - opacity: opacity, - colorBlendMode: colorBlendMode, - fit: fit, - alignment: alignment, - repeat: repeat, - centerSlice: centerSlice, - matchTextDirection: matchTextDirection, - gaplessPlayback: gaplessPlayback, - isAntiAlias: isAntiAlias, - package: package, - filterQuality: filterQuality, - cacheWidth: cacheWidth, - cacheHeight: cacheHeight, - ); - } - - ImageProvider provider({ - AssetBundle? bundle, - String? package, - }) { - return AssetImage( - _assetName, - bundle: bundle, - package: package, - ); - } - - String get path => _assetName; - - String get keyName => _assetName; -} - -class SvgGenImage { - const SvgGenImage( - this._assetName, { - this.size, - this.flavors = const {}, - }) : _isVecFormat = false; - - const SvgGenImage.vec( - this._assetName, { - this.size, - this.flavors = const {}, - }) : _isVecFormat = true; - - final String _assetName; - final Size? size; - final Set flavors; - final bool _isVecFormat; - - SvgPicture svg({ - Key? key, - bool matchTextDirection = false, - AssetBundle? bundle, - String? package, - double? width, - double? height, - BoxFit fit = BoxFit.contain, - AlignmentGeometry alignment = Alignment.center, - bool allowDrawingOutsideViewBox = false, - WidgetBuilder? placeholderBuilder, - String? semanticsLabel, - bool excludeFromSemantics = false, - SvgTheme? theme, - ColorFilter? colorFilter, - Clip clipBehavior = Clip.hardEdge, - @deprecated Color? color, - @deprecated BlendMode colorBlendMode = BlendMode.srcIn, - @deprecated bool cacheColorFilter = false, - }) { - final BytesLoader loader; - if (_isVecFormat) { - loader = AssetBytesLoader( - _assetName, - assetBundle: bundle, - packageName: package, - ); - } else { - loader = SvgAssetLoader( - _assetName, - assetBundle: bundle, - packageName: package, - theme: theme, - ); - } - return SvgPicture( - loader, - key: key, - matchTextDirection: matchTextDirection, - width: width, - height: height, - fit: fit, - alignment: alignment, - allowDrawingOutsideViewBox: allowDrawingOutsideViewBox, - placeholderBuilder: placeholderBuilder, - semanticsLabel: semanticsLabel, - excludeFromSemantics: excludeFromSemantics, - colorFilter: colorFilter ?? - (color == null ? null : ColorFilter.mode(color, colorBlendMode)), - clipBehavior: clipBehavior, - cacheColorFilter: cacheColorFilter, - ); - } - - String get path => _assetName; - - String get keyName => _assetName; -} - -class LottieGenImage { - const LottieGenImage( - this._assetName, { - this.flavors = const {}, - }); - - final String _assetName; - final Set flavors; - - LottieBuilder lottie({ - Animation? controller, - bool? animate, - FrameRate? frameRate, - bool? repeat, - bool? reverse, - LottieDelegates? delegates, - LottieOptions? options, - void Function(LottieComposition)? onLoaded, - LottieImageProviderFactory? imageProviderFactory, - Key? key, - AssetBundle? bundle, - Widget Function(BuildContext, Widget, LottieComposition?)? frameBuilder, - ImageErrorWidgetBuilder? errorBuilder, - double? width, - double? height, - BoxFit? fit, - AlignmentGeometry? alignment, - String? package, - bool? addRepaintBoundary, - FilterQuality? filterQuality, - void Function(String)? onWarning, - }) { - return Lottie.asset( - _assetName, - controller: controller, - animate: animate, - frameRate: frameRate, - repeat: repeat, - reverse: reverse, - delegates: delegates, - options: options, - onLoaded: onLoaded, - imageProviderFactory: imageProviderFactory, - key: key, - bundle: bundle, - frameBuilder: frameBuilder, - errorBuilder: errorBuilder, - width: width, - height: height, - fit: fit, - alignment: alignment, - package: package, - addRepaintBoundary: addRepaintBoundary, - filterQuality: filterQuality, - onWarning: onWarning, - ); - } - - String get path => _assetName; - - String get keyName => _assetName; -} diff --git a/lib/gen/fonts.gen.dart b/lib/gen/fonts.gen.dart deleted file mode 100644 index 6bfdb44..0000000 --- a/lib/gen/fonts.gen.dart +++ /dev/null @@ -1,21 +0,0 @@ -/// GENERATED CODE - DO NOT MODIFY BY HAND -/// ***************************************************** -/// FlutterGen -/// ***************************************************** - -// coverage:ignore-file -// ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use - -class FontFamily { - FontFamily._(); - - /// Font family: LilitaOne - static const String lilitaOne = 'LilitaOne'; - - /// Font family: ShadowsIntoLight - static const String shadowsIntoLight = 'ShadowsIntoLight'; - - /// Font family: YsabeauInfant - static const String ysabeauInfant = 'YsabeauInfant'; -} diff --git a/lib/main.dart b/lib/main.dart index ad1b56a..71ea27f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:film_flu/app/constants/app_fonts.dart'; import 'package:film_flu/app/constants/app_theme.dart'; import 'package:film_flu/app/di/di.dart'; import 'package:film_flu/app/di/top_bloc_providers.dart'; @@ -46,6 +47,11 @@ class FilmFlu extends StatelessWidget { @override Widget build(BuildContext context) { + TextTheme textTheme = + createTextTheme(context, AppFonts.primaryFont, AppFonts.tertiaryFont); + + AppTheme theme = AppTheme(textTheme); + return BlocProvider( create: (context) => AppBloc( appLocalDataSourceContract: getIt()), @@ -61,8 +67,10 @@ class FilmFlu extends StatelessWidget { supportedLocales: AppLocalizations.supportedLocales, routerConfig: _router, themeMode: state.themeMode, - theme: ThemeData.from(colorScheme: AppTheme.lightScheme()), - darkTheme: ThemeData.from(colorScheme: AppTheme.darkScheme()), + theme: theme.light(), + darkTheme: theme.dark(), + highContrastDarkTheme: theme.darkHighContrast(), + highContrastTheme: theme.lightHighContrast(), ), ); }, diff --git a/lib/presentation/features/media_day/bloc/media_item_day_bloc.dart b/lib/presentation/features/media_day/bloc/media_item_day_bloc.dart new file mode 100644 index 0000000..deb5355 --- /dev/null +++ b/lib/presentation/features/media_day/bloc/media_item_day_bloc.dart @@ -0,0 +1,12 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'media_item_day_event.dart'; +part 'media_item_day_state.dart'; +part 'media_item_day_bloc.freezed.dart'; + +class MediaItemDayBloc extends Bloc { + MediaItemDayBloc() : super(const _Initial()) { + on((event, emit) {}); + } +} diff --git a/lib/presentation/features/media_day/bloc/media_item_day_event.dart b/lib/presentation/features/media_day/bloc/media_item_day_event.dart new file mode 100644 index 0000000..c04899c --- /dev/null +++ b/lib/presentation/features/media_day/bloc/media_item_day_event.dart @@ -0,0 +1,6 @@ +part of 'media_item_day_bloc.dart'; + +@freezed +class MediaItemDayEvent with _$MediaItemDayEvent { + const factory MediaItemDayEvent.started() = _Started; +} \ No newline at end of file diff --git a/lib/presentation/features/media_day/bloc/media_item_day_state.dart b/lib/presentation/features/media_day/bloc/media_item_day_state.dart new file mode 100644 index 0000000..a77cc0a --- /dev/null +++ b/lib/presentation/features/media_day/bloc/media_item_day_state.dart @@ -0,0 +1,6 @@ +part of 'media_item_day_bloc.dart'; + +@freezed +class MediaItemDayState with _$MediaItemDayState { + const factory MediaItemDayState.initial() = _Initial; +} diff --git a/lib/presentation/features/media_details/widgets/actor_worker_item.dart b/lib/presentation/features/media_details/widgets/actor_worker_item.dart index 20ce123..0a1ab82 100644 --- a/lib/presentation/features/media_details/widgets/actor_worker_item.dart +++ b/lib/presentation/features/media_details/widgets/actor_worker_item.dart @@ -76,12 +76,7 @@ class _FilmActorItemState extends State { textAlign: TextAlign.center, maxLines: 2, overflow: TextOverflow.ellipsis, - style: TextStyle( - fontFamily: 'ShadowsIntoLight', - fontWeight: FontWeight.bold, - color: Theme.of(context).colorScheme.primary, - fontSize: 18, - ), + style: Theme.of(context).textTheme.displayLarge, ), actor.character!.isNotEmpty || actor.character != null ? AutoSizeText( @@ -89,11 +84,7 @@ class _FilmActorItemState extends State { overflow: TextOverflow.ellipsis, '${context.localizations.actor_job} ${actor.character}', textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 14, - fontFamily: 'YsabeauInfant', - color: Colors.white, - ), + style: Theme.of(context).textTheme.bodyMedium, ) : const Text('Desconocido') ], diff --git a/lib/presentation/features/media_details/widgets/background_image_media_item.dart b/lib/presentation/features/media_details/widgets/background_image_media_item.dart index 1f6e452..e7cbc58 100644 --- a/lib/presentation/features/media_details/widgets/background_image_media_item.dart +++ b/lib/presentation/features/media_details/widgets/background_image_media_item.dart @@ -39,17 +39,13 @@ class BackgroundImageMediaItem extends StatelessWidget { Row( children: [ SizedBox( - width: MediaQuery.of(context).size.width / 1.5, + width: MediaQuery.of(context).size.width / 2, child: AutoSizeText( movieName, maxLines: 3, - textAlign: TextAlign.start, + textAlign: TextAlign.justify, overflow: TextOverflow.ellipsis, - style: const TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 32, - ), + style: Theme.of(context).textTheme.titleLarge, ), ), ], @@ -66,10 +62,7 @@ class BackgroundImageMediaItem extends StatelessWidget { child: Text( context.localizations.synopsis, textAlign: TextAlign.start, - style: const TextStyle( - color: Colors.white, - fontSize: 40, - ), + style: Theme.of(context).textTheme.titleLarge, ), ), Container( @@ -80,10 +73,7 @@ class BackgroundImageMediaItem extends StatelessWidget { maxLines: 20, overflow: TextOverflow.ellipsis, textAlign: TextAlign.start, - style: const TextStyle( - color: Colors.white, - fontSize: 15, - ), + style: Theme.of(context).textTheme.bodyMedium, ), ) ], diff --git a/lib/presentation/features/media_details/widgets/credits_widget.dart b/lib/presentation/features/media_details/widgets/credits_widget.dart index b727b95..3e93693 100644 --- a/lib/presentation/features/media_details/widgets/credits_widget.dart +++ b/lib/presentation/features/media_details/widgets/credits_widget.dart @@ -60,29 +60,18 @@ class _CreditsWidget extends State SliverPersistentHeader( floating: true, delegate: SliverAppBarDelegate( - TabBar( - controller: _tabController, - unselectedLabelColor: - Theme.of(context).colorScheme.onPrimary, - labelColor: - Theme.of(context).colorScheme.onPrimary, - indicatorColor: - Theme.of(context).colorScheme.primary, - dividerColor: Colors.transparent, - tabs: [ - if (lengthCast != 0) - Tab( - icon: const Icon(Icons.movie), - text: context - .localizations.character_cast, - ), - if (lengthCrew != 0) - Tab( - icon: const Icon(Icons.movie), - text: context - .localizations.production_cast, - ) - ]), + TabBar(controller: _tabController, tabs: [ + if (lengthCast != 0) + Tab( + icon: const Icon(Icons.movie), + text: context.localizations.character_cast, + ), + if (lengthCrew != 0) + Tab( + icon: const Icon(Icons.movie), + text: context.localizations.production_cast, + ) + ]), ), ), ]; diff --git a/lib/presentation/features/media_details/widgets/film_worker_item.dart b/lib/presentation/features/media_details/widgets/film_worker_item.dart index 1ad991c..380204b 100644 --- a/lib/presentation/features/media_details/widgets/film_worker_item.dart +++ b/lib/presentation/features/media_details/widgets/film_worker_item.dart @@ -80,23 +80,14 @@ class _FilmWorkerItemState extends State { textAlign: TextAlign.center, maxLines: 2, overflow: TextOverflow.ellipsis, - style: TextStyle( - fontFamily: 'ShadowsIntoLight', - fontWeight: FontWeight.bold, - color: Theme.of(context).colorScheme.primary, - fontSize: 18, - ), + style: Theme.of(context).textTheme.displayLarge, ), AutoSizeText( '${context.localizations.production_job} ${filmWorker.job} ${context.localizations.in_preposition} ${filmWorker.knownForDepartment}', textAlign: TextAlign.center, maxLines: 4, overflow: TextOverflow.ellipsis, - style: const TextStyle( - fontSize: 14, - fontFamily: 'YsabeauInfant', - color: Colors.white, - ), + style: Theme.of(context).textTheme.bodyMedium, ), ], ), diff --git a/lib/presentation/features/media_list/widgets/media_carrousel_item.dart b/lib/presentation/features/media_list/widgets/media_carrousel_item.dart index fad7d3b..865d217 100644 --- a/lib/presentation/features/media_list/widgets/media_carrousel_item.dart +++ b/lib/presentation/features/media_list/widgets/media_carrousel_item.dart @@ -21,7 +21,7 @@ class MovieCarrouselItem extends StatelessWidget { padding: const EdgeInsets.all(8), child: Column( children: [ - InkWell( + GestureDetector( onTap: () { AppConstants.mediaType = movie.title != '' ? MediaListConstants.movieMediaType diff --git a/lib/presentation/features/settings/settings_screen.dart b/lib/presentation/features/settings/settings_screen.dart index 267874c..d08e30b 100644 --- a/lib/presentation/features/settings/settings_screen.dart +++ b/lib/presentation/features/settings/settings_screen.dart @@ -58,7 +58,7 @@ class SettingsScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - 'assets/icons/flags/${state.locale.languageCode}_flag.svg', + 'assets/flags/${state.locale.languageCode}_flag.svg', height: 20, width: 20, ), diff --git a/lib/presentation/features/splash/splash_screen.dart b/lib/presentation/features/splash/splash_screen.dart index 0c63702..f7bc8a2 100644 --- a/lib/presentation/features/splash/splash_screen.dart +++ b/lib/presentation/features/splash/splash_screen.dart @@ -59,10 +59,7 @@ class _SplashScreen extends State with TickerProviderStateMixin { alignment: Alignment.center, child: Text( context.localizations.loading_title, - style: const TextStyle( - color: Colors.white, - fontSize: 30, - ), + style: Theme.of(context).textTheme.titleLarge, ), ), ], diff --git a/lib/presentation/widgets/custom_scaffold_page.dart b/lib/presentation/widgets/custom_scaffold_page.dart index 4110519..29e31cb 100644 --- a/lib/presentation/widgets/custom_scaffold_page.dart +++ b/lib/presentation/widgets/custom_scaffold_page.dart @@ -1,14 +1,18 @@ import 'package:film_flu/app/constants/app_assets.dart'; import 'package:film_flu/app/constants/app_colors.dart'; +import 'package:film_flu/app/constants/app_constants.dart'; import 'package:film_flu/app/extensions/localizations_extensions.dart'; import 'package:film_flu/app/l10n/localizations/app_localizations.dart'; import 'package:film_flu/app/routes/app_paths.dart'; import 'package:film_flu/presentation/top_blocs/app_bloc.dart'; import 'package:film_flu/presentation/widgets/flip_view.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; import 'package:go_router/go_router.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:url_launcher/url_launcher.dart'; class ScaffoldPage extends StatefulWidget { const ScaffoldPage({ @@ -62,7 +66,6 @@ class _ScaffoldPageState extends State { } }), toolbarHeight: 100, - backgroundColor: Theme.of(context).colorScheme.primary, actions: [ Padding( padding: const EdgeInsets.all(16.0), @@ -78,89 +81,85 @@ class _ScaffoldPageState extends State { ), bottomNavigationBar: !widget.fullScreenMode ? BottomAppBar( - height: 50, - padding: EdgeInsets.zero, - color: Theme.of(context).colorScheme.primary, - child: SizedBox( - height: 50, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 12.0), - child: Row( - children: [ - Center( - child: Padding( - padding: const EdgeInsets.only(right: 8), - child: Text( - context.localizations.made_with_love, - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: Colors.white, - ), - ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 12.0), + child: Row( + children: [ + Center( + child: Padding( + padding: const EdgeInsets.only(right: 8), + child: Text( + context.localizations.made_with_love, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleMedium, ), ), - GestureDetector( - onTap: () { - setState(() { - loveTapped = !loveTapped; - }); - }, - child: FlipCard( - toggler: !loveTapped, - frontCard: SvgPicture.asset( - AppAssets.fullHeartIcon, - height: 24, - width: 24, - colorFilter: const ColorFilter.mode( - Colors.white, - BlendMode.srcIn, - ), + ), + GestureDetector( + onTap: () { + setState(() { + loveTapped = !loveTapped; + }); + }, + child: FlipCard( + toggler: !loveTapped, + frontCard: SvgPicture.asset( + AppAssets.fullHeartIcon, + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + Theme.of(context).colorScheme.onSecondary, + BlendMode.srcIn, ), - backCard: SvgPicture.asset( - AppAssets.fullHeartIcon, - height: 24, - width: 24, - colorFilter: const ColorFilter.mode( - AppColors.andalucianColor, - BlendMode.srcIn, - ), + ), + backCard: SvgPicture.asset( + AppAssets.fullHeartIcon, + height: 24, + width: 24, + colorFilter: const ColorFilter.mode( + AppColors.andalucianColor, + BlendMode.srcIn, ), ), ), - ], - ), + ), + ], ), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 12.0), - child: Row( - children: [ - const Icon( - Icons.copyright, - color: Colors.white, - ), - Center( - child: Padding( - padding: const EdgeInsets.only(left: 8), - child: Text( - '${today.year} @dherediat97', - style: const TextStyle( - fontSize: 14, - color: Colors.white, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 12.0), + child: Row( + children: [ + Icon( + Icons.copyright, + color: Theme.of(context).colorScheme.onSecondary, + ), + Center( + child: Padding( + padding: const EdgeInsets.only(left: 8), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () { + launchUrl(AppConstants.myGithubPage); + }, + child: Text( + '${today.year} @dherediat97', + style: + Theme.of(context).textTheme.titleMedium, ), ), ), - ) - ], - ), - ) - ], - ), + ), + ) + ], + ), + ) + ], ), ) : null, @@ -174,23 +173,23 @@ class _ScaffoldPageState extends State { bool isLightMode = ThemeMode.dark == context.read().state.themeMode; - actions.add( - IconButton( - icon: const Icon( - Icons.settings, - color: Colors.white, - ), - onPressed: () { - context.go(AppRoutePaths.settingsRoute); - }, - ), - ); + // actions.add( + // IconButton( + // icon: Icon( + // Icons.settings, + // color: Theme.of(context).colorScheme.onSecondary, + // ), + // onPressed: () { + // context.go(AppRoutePaths.settingsRoute); + // }, + // ), + // ); actions.add( IconButton( icon: Icon( isLightMode ? Icons.light_mode : Icons.dark_mode, - color: Colors.white, + color: Theme.of(context).colorScheme.onSecondary, ), onPressed: () { context.read().add(AppEvent.toogleTheme(isLightMode)); @@ -199,7 +198,7 @@ class _ScaffoldPageState extends State { ); actions.add(DropdownButton( - iconEnabledColor: Colors.white, + iconEnabledColor: Theme.of(context).colorScheme.onSecondary, onChanged: (language) { context .read() @@ -219,7 +218,7 @@ class _ScaffoldPageState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - 'assets/icons/flags/${language.languageCode}_flag.svg', + 'assets/flags/${language.languageCode}_flag.svg', height: 20, width: 20, fit: BoxFit.contain, @@ -227,30 +226,32 @@ class _ScaffoldPageState extends State { const SizedBox(height: 40), Text( language.languageCode, - style: const TextStyle(color: Colors.white), + style: TextStyle( + color: Theme.of(context).colorScheme.onSecondary, + ), ) ], ), ); }).toList())); - // if (kIsWeb) { - // actions.add( - // IconButton( - // onPressed: () async { - // PackageInfo packageInfo = await PackageInfo.fromPlatform(); - // AppConstants.version = packageInfo.version; + if (kIsWeb) { + actions.add( + IconButton( + onPressed: () async { + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + AppConstants.version = packageInfo.version; - // final Uri url = Uri.parse(AppConstants.appDownloadBaseUrl); - // //Lanzar url que descarga la app para android - // await launchUrl(url); - // }, - // icon: Icon( - // Icons.android, - // color: Theme.of(context).colorScheme.primary, - // ), - // ), - // ); - // } + final Uri url = Uri.parse(AppConstants.appDownloadBaseUrl); + //Lanzar url que descarga la app para android + await launchUrl(url); + }, + icon: Icon( + Icons.android, + color: Theme.of(context).colorScheme.onSecondary, + ), + ), + ); + } return actions; } } diff --git a/pubspec.yaml b/pubspec.yaml index 0120c95..8f85dcf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,6 +60,7 @@ dependencies: youtube_player_iframe: ^5.1.3 url_launcher: ^6.1.11 shimmer: ^3.0.0 + google_fonts: ^6.2.1 dev_dependencies: flutter_test: @@ -81,7 +82,6 @@ dev_dependencies: # https://pub.dev/packages/bloc_test bloc_test: ^9.1.7 flutter_launcher_icons: ^0.13.1 - flutter_gen_runner: ^5.6.0 flutter: generate: true @@ -89,9 +89,9 @@ flutter: assets: - assets/images/ - assets/icons/ - - assets/icons/flags/ - - fonts/ + - assets/flags/ - assets/animations/ + - fonts/ fonts: - family: YsabeauInfant fonts: @@ -114,15 +114,6 @@ flutter_launcher_icons: background_color: "#000" theme_color: "#D42029" -flutter_gen: - output: lib/gen/ - line_length: 80 - - integrations: - freezed: true - flutter_svg: true - lottie: true - flutter_intl: enabled: true class_name: AppLocalizations \ No newline at end of file