diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 21c624c..9c997cf 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:icon="@mipmap/launcher_icon"> + + + + + + + + + + + + + + + + + + + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4ef4bed..abfee56 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,15 +1,38 @@ PODS: - app_links (0.0.1): - Flutter + - AppAuth (1.6.2): + - AppAuth/Core (= 1.6.2) + - AppAuth/ExternalUserAgent (= 1.6.2) + - AppAuth/Core (1.6.2) + - AppAuth/ExternalUserAgent (1.6.2): + - AppAuth/Core - Flutter (1.0.0) - flutter_secure_storage (6.0.0): - Flutter + - google_sign_in_ios (0.0.1): + - Flutter + - FlutterMacOS + - GoogleSignIn (~> 7.0) + - GoogleSignIn (7.0.0): + - AppAuth (~> 1.5) + - GTMAppAuth (< 3.0, >= 1.3) + - GTMSessionFetcher/Core (< 4.0, >= 1.1) + - GTMAppAuth (2.0.0): + - AppAuth/Core (~> 1.6) + - GTMSessionFetcher/Core (< 4.0, >= 1.5) + - GTMSessionFetcher/Core (3.1.1) + - image_picker_ios (0.0.1): + - Flutter - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS + - sqflite (0.0.3): + - Flutter + - FlutterMacOS - url_launcher_ios (0.0.1): - Flutter @@ -17,10 +40,20 @@ DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) - Flutter (from `Flutter`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite (from `.symlinks/plugins/sqflite/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) +SPEC REPOS: + trunk: + - AppAuth + - GoogleSignIn + - GTMAppAuth + - GTMSessionFetcher + EXTERNAL SOURCES: app_links: :path: ".symlinks/plugins/app_links/ios" @@ -28,19 +61,32 @@ EXTERNAL SOURCES: :path: Flutter flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" + google_sign_in_ios: + :path: ".symlinks/plugins/google_sign_in_ios/darwin" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + sqflite: + :path: ".symlinks/plugins/sqflite/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" SPEC CHECKSUMS: app_links: 5ef33d0d295a89d9d16bb81b0e3b0d5f70d6c875 + AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be + google_sign_in_ios: 989eea5abe94af62050782714daf920be883d4a2 + GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842 + GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae + GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72 + image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8628bb3..a557d82 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -97,7 +97,6 @@ 77B0698F99E00CC5C7B0387C /* Pods-RunnerTests.release.xcconfig */, 1759EC8B744092C106509B02 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -199,6 +198,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, F64562E3FE6FA1F76485AA42 /* [CP] Embed Pods Frameworks */, + 2C0A6153748417668EB548ED /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -216,7 +216,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { @@ -270,6 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2C0A6153748417668EB548ED /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -469,7 +486,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 9CNZR4XYNF; + DEVELOPMENT_TEAM = 28S9G7RMVM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -648,7 +665,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 9CNZR4XYNF; + DEVELOPMENT_TEAM = 28S9G7RMVM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -671,7 +688,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 9CNZR4XYNF; + DEVELOPMENT_TEAM = 28S9G7RMVM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 87131a0..8e3ca5d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { diff --git a/lib/main.dart b/lib/main.dart index 8a0e3d3..6f2f054 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -57,8 +57,10 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Supabase Playground', - theme: AppTheme.lightTheme, + title: 'Manch', + theme: MaterialTheme(TextTheme()).light(), + darkTheme: MaterialTheme(TextTheme()).dark(), + themeMode: _mainStore.themeMode, initialRoute: Routes.initial, onGenerateRoute: RouteGenerator.generateRoute, localizationsDelegates: AppLocalizations.localizationsDelegates, diff --git a/lib/main_store.dart b/lib/main_store.dart index 0b2d56b..816bf14 100644 --- a/lib/main_store.dart +++ b/lib/main_store.dart @@ -26,6 +26,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:mobx/mobx.dart'; @@ -37,6 +38,9 @@ abstract class _MainStore with Store { @observable Locale? currentLocale = AppLocalizations.supportedLocales[0]; + @observable + ThemeMode themeMode = ThemeMode.system; + @action void setCurrentLocale(String languageCode) { AppLocalizations.supportedLocales.forEach((element) { diff --git a/lib/screen/onboarding/login_sign_up_screen.dart b/lib/screen/onboarding/login_sign_up_screen.dart index a67a97a..479f70b 100644 --- a/lib/screen/onboarding/login_sign_up_screen.dart +++ b/lib/screen/onboarding/login_sign_up_screen.dart @@ -28,7 +28,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:manch/screen/onboarding/store/on_boarding_store.dart'; +import 'package:manch/values/assets.dart'; import 'package:manch/values/routes.dart'; import 'package:manch/widget/custom_button.dart'; import 'package:manch/widget/custom_text_field.dart'; @@ -67,9 +69,10 @@ class _LoginSignUpScreenState extends State { mainAxisSize: MainAxisSize.max, children: [ const SizedBox(height: 32), - FlutterLogo( - size: 64, - style: FlutterLogoStyle.stacked, + SvgPicture.asset( + SVGs.icAppIconWithoutBackground, + height: 64, + width: 64, ), const SizedBox(height: 32), Row( diff --git a/lib/values/assets.dart b/lib/values/assets.dart index c7a3019..2a44d1d 100644 --- a/lib/values/assets.dart +++ b/lib/values/assets.dart @@ -33,4 +33,6 @@ class SVGs { static const String icPlus = "${_basePath}ic_plus.svg"; static const String icSend = "${_basePath}ic_send.svg"; static const String icUser = "${_basePath}ic_user.svg"; + static const String icAppIconWithoutBackground = + "${_basePath}ic_app_icon_without_background.svg"; } diff --git a/lib/values/theme.dart b/lib/values/theme.dart index 178b149..035244b 100644 --- a/lib/values/theme.dart +++ b/lib/values/theme.dart @@ -26,63 +26,561 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:manch/values/app_colors.dart'; - -class AppTheme { - static ThemeData? lightTheme = ThemeData( - scaffoldBackgroundColor: AppColors.screenBackground, - primaryColor: AppColors.blue, - cardColor: Colors.white, - floatingActionButtonTheme: FloatingActionButtonThemeData( - backgroundColor: AppColors.blue, - ), - appBarTheme: const AppBarTheme( - color: Colors.white, - elevation: 4, - titleTextStyle: TextStyle( - color: AppColors.dark, - fontWeight: FontWeight.bold, - ), - ), - tabBarTheme: const TabBarTheme( - labelColor: AppColors.dark, - indicatorSize: TabBarIndicatorSize.label, - unselectedLabelColor: AppColors.gray, - ), - inputDecorationTheme: InputDecorationTheme( - filled: true, - fillColor: Colors.white, - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(28), - borderSide: BorderSide.none, - ), - ), - fontFamily: GoogleFonts.nunitoSans().fontFamily, - bottomNavigationBarTheme: const BottomNavigationBarThemeData( - elevation: 4, - backgroundColor: Colors.white, - showUnselectedLabels: false, - showSelectedLabels: true, - selectedLabelStyle: TextStyle(color: AppColors.blue), - selectedItemColor: AppColors.dark, - unselectedItemColor: AppColors.gray, - type: BottomNavigationBarType.fixed, - ), - bottomAppBarTheme: const BottomAppBarTheme( - shape: CircularNotchedRectangle(), - elevation: 4, - color: Colors.white, - ), - elevatedButtonTheme: ElevatedButtonThemeData( - style: ButtonStyle( - minimumSize: MaterialStateProperty.all(const Size.fromHeight(48)), - shape: MaterialStateProperty.all( - RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)), - ), - ), - ), - colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Colors.white), +import "package:flutter/material.dart"; +import "package:google_fonts/google_fonts.dart"; + +class MaterialTheme { + final TextTheme textTheme; + + const MaterialTheme(this.textTheme); + + static MaterialScheme lightScheme() { + return const MaterialScheme( + brightness: Brightness.light, + primary: Color(4287515952), + surfaceTint: Color(4287515952), + onPrimary: Color(4294967295), + primaryContainer: Color(4294958030), + onPrimaryContainer: Color(4281798144), + secondary: Color(4286011211), + onSecondary: Color(4294967295), + secondaryContainer: Color(4294958030), + onSecondaryContainer: Color(4281079308), + tertiary: Color(4285030192), + onTertiary: Color(4294967295), + tertiaryContainer: Color(4293977000), + onTertiaryContainer: Color(4280359936), + error: Color(4290386458), + onError: Color(4294967295), + errorContainer: Color(4294957782), + onErrorContainer: Color(4282449922), + background: Color(4294965494), + onBackground: Color(4280490518), + surface: Color(4294965494), + onSurface: Color(4280490518), + surfaceVariant: Color(4294303446), + onSurfaceVariant: Color(4283646782), + outline: Color(4286935917), + outlineVariant: Color(4292395706), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4281871914), + inverseOnSurface: Color(4294962663), + inversePrimary: Color(4294948248), + primaryFixed: Color(4294958030), + onPrimaryFixed: Color(4281798144), + primaryFixedDim: Color(4294948248), + onPrimaryFixedVariant: Color(4285609500), + secondaryFixed: Color(4294958030), + onSecondaryFixed: Color(4281079308), + secondaryFixedDim: Color(4293377710), + onSecondaryFixedVariant: Color(4284301365), + tertiaryFixed: Color(4293977000), + onTertiaryFixed: Color(4280359936), + tertiaryFixedDim: Color(4292069262), + onTertiaryFixedVariant: Color(4283385627), + surfaceDim: Color(4293449424), + surfaceBright: Color(4294965494), + surfaceContainerLowest: Color(4294967295), + surfaceContainerLow: Color(4294963692), + surfaceContainer: Color(4294765284), + surfaceContainerHigh: Color(4294370526), + surfaceContainerHighest: Color(4294041561), + ); + } + + ThemeData light() { + return theme(lightScheme().toColorScheme()); + } + + static MaterialScheme lightMediumContrastScheme() { + return const MaterialScheme( + brightness: Brightness.light, + primary: Color(4285280792), + surfaceTint: Color(4287515952), + onPrimary: Color(4294967295), + primaryContainer: Color(4289290820), + onPrimaryContainer: Color(4294967295), + secondary: Color(4283972657), + onSecondary: Color(4294967295), + secondaryContainer: Color(4287589728), + onSecondaryContainer: Color(4294967295), + tertiary: Color(4283122455), + onTertiary: Color(4294967295), + tertiaryContainer: Color(4286543172), + onTertiaryContainer: Color(4294967295), + error: Color(4287365129), + onError: Color(4294967295), + errorContainer: Color(4292490286), + onErrorContainer: Color(4294967295), + background: Color(4294965494), + onBackground: Color(4280490518), + surface: Color(4294965494), + onSurface: Color(4280490518), + surfaceVariant: Color(4294303446), + onSurfaceVariant: Color(4283318330), + outline: Color(4285291605), + outlineVariant: Color(4287199088), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4281871914), + inverseOnSurface: Color(4294962663), + inversePrimary: Color(4294948248), + primaryFixed: Color(4289290820), + onPrimaryFixed: Color(4294967295), + primaryFixedDim: Color(4287318574), + onPrimaryFixedVariant: Color(4294967295), + secondaryFixed: Color(4287589728), + onSecondaryFixed: Color(4294967295), + secondaryFixedDim: Color(4285814088), + onSecondaryFixedVariant: Color(4294967295), + tertiaryFixed: Color(4286543172), + onTertiaryFixed: Color(4294967295), + tertiaryFixedDim: Color(4284832814), + onTertiaryFixedVariant: Color(4294967295), + surfaceDim: Color(4293449424), + surfaceBright: Color(4294965494), + surfaceContainerLowest: Color(4294967295), + surfaceContainerLow: Color(4294963692), + surfaceContainer: Color(4294765284), + surfaceContainerHigh: Color(4294370526), + surfaceContainerHighest: Color(4294041561), + ); + } + + ThemeData lightMediumContrast() { + return theme(lightMediumContrastScheme().toColorScheme()); + } + + static MaterialScheme lightHighContrastScheme() { + return const MaterialScheme( + brightness: Brightness.light, + primary: Color(4282520320), + surfaceTint: Color(4287515952), + onPrimary: Color(4294967295), + primaryContainer: Color(4285280792), + onPrimaryContainer: Color(4294967295), + secondary: Color(4281605139), + onSecondary: Color(4294967295), + secondaryContainer: Color(4283972657), + onSecondaryContainer: Color(4294967295), + tertiary: Color(4280820224), + onTertiary: Color(4294967295), + tertiaryContainer: Color(4283122455), + onTertiaryContainer: Color(4294967295), + error: Color(4283301890), + onError: Color(4294967295), + errorContainer: Color(4287365129), + onErrorContainer: Color(4294967295), + background: Color(4294965494), + onBackground: Color(4280490518), + surface: Color(4294965494), + onSurface: Color(4278190080), + surfaceVariant: Color(4294303446), + onSurfaceVariant: Color(4281213212), + outline: Color(4283318330), + outlineVariant: Color(4283318330), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4281871914), + inverseOnSurface: Color(4294967295), + inversePrimary: Color(4294961119), + primaryFixed: Color(4285280792), + onPrimaryFixed: Color(4294967295), + primaryFixedDim: Color(4283440389), + onPrimaryFixedVariant: Color(4294967295), + secondaryFixed: Color(4283972657), + onSecondaryFixed: Color(4294967295), + secondaryFixedDim: Color(4282394396), + onSecondaryFixedVariant: Color(4294967295), + tertiaryFixed: Color(4283122455), + onTertiaryFixed: Color(4294967295), + tertiaryFixedDim: Color(4281609475), + onTertiaryFixedVariant: Color(4294967295), + surfaceDim: Color(4293449424), + surfaceBright: Color(4294965494), + surfaceContainerLowest: Color(4294967295), + surfaceContainerLow: Color(4294963692), + surfaceContainer: Color(4294765284), + surfaceContainerHigh: Color(4294370526), + surfaceContainerHighest: Color(4294041561), + ); + } + + ThemeData lightHighContrast() { + return theme(lightHighContrastScheme().toColorScheme()); + } + + static MaterialScheme darkScheme() { + return const MaterialScheme( + brightness: Brightness.dark, + primary: Color(4294948248), + surfaceTint: Color(4294948248), + onPrimary: Color(4283768839), + primaryContainer: Color(4285609500), + onPrimaryContainer: Color(4294958030), + secondary: Color(4293377710), + onSecondary: Color(4282657312), + secondaryContainer: Color(4284301365), + onSecondaryContainer: Color(4294958030), + tertiary: Color(4292069262), + onTertiary: Color(4281872390), + tertiaryContainer: Color(4283385627), + onTertiaryContainer: Color(4293977000), + error: Color(4294948011), + onError: Color(4285071365), + errorContainer: Color(4287823882), + onErrorContainer: Color(4294957782), + background: Color(4279898382), + onBackground: Color(4294041561), + surface: Color(4279898382), + onSurface: Color(4294041561), + surfaceVariant: Color(4283646782), + onSurfaceVariant: Color(4292395706), + outline: Color(4288712070), + outlineVariant: Color(4283646782), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4294041561), + inverseOnSurface: Color(4281871914), + inversePrimary: Color(4287515952), + primaryFixed: Color(4294958030), + onPrimaryFixed: Color(4281798144), + primaryFixedDim: Color(4294948248), + onPrimaryFixedVariant: Color(4285609500), + secondaryFixed: Color(4294958030), + onSecondaryFixed: Color(4281079308), + secondaryFixedDim: Color(4293377710), + onSecondaryFixedVariant: Color(4284301365), + tertiaryFixed: Color(4293977000), + onTertiaryFixed: Color(4280359936), + tertiaryFixedDim: Color(4292069262), + onTertiaryFixedVariant: Color(4283385627), + surfaceDim: Color(4279898382), + surfaceBright: Color(4282529587), + surfaceContainerLowest: Color(4279503881), + surfaceContainerLow: Color(4280490518), + surfaceContainer: Color(4280753690), + surfaceContainerHigh: Color(4281477156), + surfaceContainerHighest: Color(4282200623), + ); + } + + ThemeData dark() { + return theme(darkScheme().toColorScheme()); + } + + static MaterialScheme darkMediumContrastScheme() { + return const MaterialScheme( + brightness: Brightness.dark, + primary: Color(4294949792), + surfaceTint: Color(4294948248), + onPrimary: Color(4281207552), + primaryContainer: Color(4291460445), + onPrimaryContainer: Color(4278190080), + secondary: Color(4293640882), + onSecondary: Color(4280684808), + secondaryContainer: Color(4289563003), + onSecondaryContainer: Color(4278190080), + tertiary: Color(4292397970), + onTertiary: Color(4279965184), + tertiaryContainer: Color(4288450909), + onTertiaryContainer: Color(4278190080), + error: Color(4294949553), + onError: Color(4281794561), + errorContainer: Color(4294923337), + onErrorContainer: Color(4278190080), + background: Color(4279898382), + onBackground: Color(4294041561), + surface: Color(4279898382), + onSurface: Color(4294965752), + surfaceVariant: Color(4283646782), + onSurfaceVariant: Color(4292658878), + outline: Color(4289961879), + outlineVariant: Color(4287790968), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4294041561), + inverseOnSurface: Color(4281477156), + inversePrimary: Color(4285740829), + primaryFixed: Color(4294958030), + onPrimaryFixed: Color(4280616960), + primaryFixedDim: Color(4294948248), + onPrimaryFixedVariant: Color(4284229133), + secondaryFixed: Color(4294958030), + onSecondaryFixed: Color(4280290308), + secondaryFixedDim: Color(4293377710), + onSecondaryFixedVariant: Color(4283052069), + tertiaryFixed: Color(4293977000), + onTertiaryFixed: Color(4279570688), + tertiaryFixedDim: Color(4292069262), + onTertiaryFixedVariant: Color(4282267147), + surfaceDim: Color(4279898382), + surfaceBright: Color(4282529587), + surfaceContainerLowest: Color(4279503881), + surfaceContainerLow: Color(4280490518), + surfaceContainer: Color(4280753690), + surfaceContainerHigh: Color(4281477156), + surfaceContainerHighest: Color(4282200623), + ); + } + + ThemeData darkMediumContrast() { + return theme(darkMediumContrastScheme().toColorScheme()); + } + + static MaterialScheme darkHighContrastScheme() { + return const MaterialScheme( + brightness: Brightness.dark, + primary: Color(4294965752), + surfaceTint: Color(4294948248), + onPrimary: Color(4278190080), + primaryContainer: Color(4294949792), + onPrimaryContainer: Color(4278190080), + secondary: Color(4294965752), + onSecondary: Color(4278190080), + secondaryContainer: Color(4293640882), + onSecondaryContainer: Color(4278190080), + tertiary: Color(4294966004), + onTertiary: Color(4278190080), + tertiaryContainer: Color(4292397970), + onTertiaryContainer: Color(4278190080), + error: Color(4294965753), + onError: Color(4278190080), + errorContainer: Color(4294949553), + onErrorContainer: Color(4278190080), + background: Color(4279898382), + onBackground: Color(4294041561), + surface: Color(4279898382), + onSurface: Color(4294967295), + surfaceVariant: Color(4283646782), + onSurfaceVariant: Color(4294965752), + outline: Color(4292658878), + outlineVariant: Color(4292658878), + shadow: Color(4278190080), + scrim: Color(4278190080), + inverseSurface: Color(4294041561), + inverseOnSurface: Color(4278190080), + inversePrimary: Color(4283177475), + primaryFixed: Color(4294959317), + onPrimaryFixed: Color(4278190080), + primaryFixedDim: Color(4294949792), + onPrimaryFixedVariant: Color(4281207552), + secondaryFixed: Color(4294959317), + onSecondaryFixed: Color(4278190080), + secondaryFixedDim: Color(4293640882), + onSecondaryFixedVariant: Color(4280684808), + tertiaryFixed: Color(4294305708), + onTertiaryFixed: Color(4278190080), + tertiaryFixedDim: Color(4292397970), + onTertiaryFixedVariant: Color(4279965184), + surfaceDim: Color(4279898382), + surfaceBright: Color(4282529587), + surfaceContainerLowest: Color(4279503881), + surfaceContainerLow: Color(4280490518), + surfaceContainer: Color(4280753690), + surfaceContainerHigh: Color(4281477156), + surfaceContainerHighest: Color(4282200623), + ); + } + + ThemeData darkHighContrast() { + return theme(darkHighContrastScheme().toColorScheme()); + } + + + ThemeData theme(ColorScheme colorScheme) => ThemeData( + useMaterial3: true, + brightness: colorScheme.brightness, + colorScheme: colorScheme, + fontFamily: GoogleFonts.nunitoSans().fontFamily, + textTheme: textTheme.apply( + bodyColor: colorScheme.onSurface, + displayColor: colorScheme.onSurface, + ), + scaffoldBackgroundColor: colorScheme.background, + canvasColor: colorScheme.surface, ); + + + List get extendedColors => [ + ]; +} + +class MaterialScheme { + const MaterialScheme({ + required this.brightness, + required this.primary, + required this.surfaceTint, + required this.onPrimary, + required this.primaryContainer, + required this.onPrimaryContainer, + required this.secondary, + required this.onSecondary, + required this.secondaryContainer, + required this.onSecondaryContainer, + required this.tertiary, + required this.onTertiary, + required this.tertiaryContainer, + required this.onTertiaryContainer, + required this.error, + required this.onError, + required this.errorContainer, + required this.onErrorContainer, + required this.background, + required this.onBackground, + required this.surface, + required this.onSurface, + required this.surfaceVariant, + required this.onSurfaceVariant, + required this.outline, + required this.outlineVariant, + required this.shadow, + required this.scrim, + required this.inverseSurface, + required this.inverseOnSurface, + required this.inversePrimary, + required this.primaryFixed, + required this.onPrimaryFixed, + required this.primaryFixedDim, + required this.onPrimaryFixedVariant, + required this.secondaryFixed, + required this.onSecondaryFixed, + required this.secondaryFixedDim, + required this.onSecondaryFixedVariant, + required this.tertiaryFixed, + required this.onTertiaryFixed, + required this.tertiaryFixedDim, + required this.onTertiaryFixedVariant, + required this.surfaceDim, + required this.surfaceBright, + required this.surfaceContainerLowest, + required this.surfaceContainerLow, + required this.surfaceContainer, + required this.surfaceContainerHigh, + required this.surfaceContainerHighest, + }); + + final Brightness brightness; + final Color primary; + final Color surfaceTint; + final Color onPrimary; + final Color primaryContainer; + final Color onPrimaryContainer; + final Color secondary; + final Color onSecondary; + final Color secondaryContainer; + final Color onSecondaryContainer; + final Color tertiary; + final Color onTertiary; + final Color tertiaryContainer; + final Color onTertiaryContainer; + final Color error; + final Color onError; + final Color errorContainer; + final Color onErrorContainer; + final Color background; + final Color onBackground; + final Color surface; + final Color onSurface; + final Color surfaceVariant; + final Color onSurfaceVariant; + final Color outline; + final Color outlineVariant; + final Color shadow; + final Color scrim; + final Color inverseSurface; + final Color inverseOnSurface; + final Color inversePrimary; + final Color primaryFixed; + final Color onPrimaryFixed; + final Color primaryFixedDim; + final Color onPrimaryFixedVariant; + final Color secondaryFixed; + final Color onSecondaryFixed; + final Color secondaryFixedDim; + final Color onSecondaryFixedVariant; + final Color tertiaryFixed; + final Color onTertiaryFixed; + final Color tertiaryFixedDim; + final Color onTertiaryFixedVariant; + final Color surfaceDim; + final Color surfaceBright; + final Color surfaceContainerLowest; + final Color surfaceContainerLow; + final Color surfaceContainer; + final Color surfaceContainerHigh; + final Color surfaceContainerHighest; +} + +extension MaterialSchemeUtils on MaterialScheme { + ColorScheme toColorScheme() { + return ColorScheme( + brightness: brightness, + primary: primary, + onPrimary: onPrimary, + primaryContainer: primaryContainer, + onPrimaryContainer: onPrimaryContainer, + secondary: secondary, + onSecondary: onSecondary, + secondaryContainer: secondaryContainer, + onSecondaryContainer: onSecondaryContainer, + tertiary: tertiary, + onTertiary: onTertiary, + tertiaryContainer: tertiaryContainer, + onTertiaryContainer: onTertiaryContainer, + error: error, + onError: onError, + errorContainer: errorContainer, + onErrorContainer: onErrorContainer, + background: background, + onBackground: onBackground, + surface: surface, + onSurface: onSurface, + surfaceVariant: surfaceVariant, + onSurfaceVariant: onSurfaceVariant, + outline: outline, + outlineVariant: outlineVariant, + shadow: shadow, + scrim: scrim, + inverseSurface: inverseSurface, + onInverseSurface: inverseOnSurface, + inversePrimary: inversePrimary, + ); + } +} + +class ExtendedColor { + final Color seed, value; + final ColorFamily light; + final ColorFamily lightHighContrast; + final ColorFamily lightMediumContrast; + final ColorFamily dark; + final ColorFamily darkHighContrast; + final ColorFamily darkMediumContrast; + + const ExtendedColor({ + required this.seed, + required this.value, + required this.light, + required this.lightHighContrast, + required this.lightMediumContrast, + required this.dark, + required this.darkHighContrast, + required this.darkMediumContrast, + }); +} + +class ColorFamily { + const ColorFamily({ + required this.color, + required this.onColor, + required this.colorContainer, + required this.onColorContainer, + }); + + final Color color; + final Color onColor; + final Color colorContainer; + final Color onColorContainer; } diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index a2ec33f..96d3fee 100644 --- a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,68 +1,68 @@ { - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" + "info": { + "version": 1, + "author": "xcode" }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} + "images": [ + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_16.png", + "scale": "1x" + }, + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "2x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "1x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_64.png", + "scale": "2x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_128.png", + "scale": "1x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "2x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "1x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "2x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "1x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_1024.png", + "scale": "2x" + } + ] +} \ No newline at end of file diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png index 82b6f9d..2d9a502 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png index 13b35eb..bf6f873 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png index 0a3f5fa..f50c812 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png index bdb5722..3a8d46d 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png index f083318..b7b3331 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png index 326c0e7..acbd6f9 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png index 2f1632c..12570b0 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/pubspec.lock b/pubspec.lock index 8351376..6d2af22 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -661,6 +661,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" logging: dependency: transitive description: @@ -673,26 +697,26 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" mime: dependency: transitive description: @@ -745,10 +769,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_parsing: dependency: transitive description: @@ -1266,6 +1290,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" watcher: dependency: transitive description: diff --git a/web/favicon.png b/web/favicon.png index 8aaa46a..f50c812 100644 Binary files a/web/favicon.png and b/web/favicon.png differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png index b749bfe..9efcbc9 100644 Binary files a/web/icons/Icon-192.png and b/web/icons/Icon-192.png differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png index 88cfd48..acbd6f9 100644 Binary files a/web/icons/Icon-512.png and b/web/icons/Icon-512.png differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png index eb9b4d7..9efcbc9 100644 Binary files a/web/icons/Icon-maskable-192.png and b/web/icons/Icon-maskable-192.png differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png index d69c566..acbd6f9 100644 Binary files a/web/icons/Icon-maskable-512.png and b/web/icons/Icon-maskable-512.png differ diff --git a/web/manifest.json b/web/manifest.json index b7e0340..efde8bd 100644 --- a/web/manifest.json +++ b/web/manifest.json @@ -18,6 +18,18 @@ "src": "icons/Icon-512.png", "sizes": "512x512", "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" } ] -} +} \ No newline at end of file diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000..5acb27a Binary files /dev/null and b/windows/runner/resources/app_icon.ico differ