diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 4f8d4d2..8c6e561 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 11.0
+ 12.0
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
index 592ceee..ec97fc6 100644
--- a/ios/Flutter/Debug.xcconfig
+++ b/ios/Flutter/Debug.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
index 592ceee..c4855bf 100644
--- a/ios/Flutter/Release.xcconfig
+++ b/ios/Flutter/Release.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
diff --git a/ios/Podfile b/ios/Podfile
new file mode 100644
index 0000000..d97f17e
--- /dev/null
+++ b/ios/Podfile
@@ -0,0 +1,44 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '12.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+ target 'RunnerTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..b6b90e4
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,23 @@
+PODS:
+ - Flutter (1.0.0)
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+
+SPEC CHECKSUMS:
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+
+PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796
+
+COCOAPODS: 1.13.0
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index f0e9b9f..8159a90 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -10,10 +10,12 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 5C0C883365A74E66A21832EF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14BDFF4A9FBDAED011DC4D1B /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ FCE7AA2AA40330104E162894 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26424A3B89A766D955A22C88 /* Pods_RunnerTests.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -40,14 +42,29 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 0255D76A5832986E0A86F2AC /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; };
+ 026DBCB0D02796D54855CAF3 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; };
+ 10E5B9E262031C902DD1B249 /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 14BDFF4A9FBDAED011DC4D1B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 22B232B5E86F965A6C1830D8 /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; };
+ 26424A3B89A766D955A22C88 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 32EF3FAE41B9B356F382CBDE /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
- 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 501143C986917B321786D428 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; };
+ 601F984FDF5558763A8635DD /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; };
+ 6E4632846EB0BE4B156FE20C /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 7DBB764AD6C65B3C25C23C10 /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; };
+ 81E39C638037771200F32E70 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; };
+ 89A395A321872B6E063A498A /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; };
+ 92E8B8128E94B43933123450 /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; };
+ 9445D65E350D8709C4C139CD /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -55,20 +72,34 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A7E769A3A68299F7667DB8C6 /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; };
+ C111C509C1FC95A507FCE256 /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; };
+ DB16D4796AE5ACAD09383056 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; };
+ F6B0D67E2A6EE44082F9E4E2 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; };
+ FB022A6B9C9AEB20D026FCB2 /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 636DF4E030D01DA56A394A86 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FCE7AA2AA40330104E162894 /* Pods_RunnerTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 5C0C883365A74E66A21832EF /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C807B294A618700263BE5 /* RunnerTests.swift */,
@@ -76,6 +107,15 @@
path = RunnerTests;
sourceTree = "";
};
+ 5EEC1B8D36092A51EED463FC /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 14BDFF4A9FBDAED011DC4D1B /* Pods_Runner.framework */,
+ 26424A3B89A766D955A22C88 /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -94,6 +134,8 @@
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
+ EBE5746596C64281CFA0DE38 /* Pods */,
+ 5EEC1B8D36092A51EED463FC /* Frameworks */,
);
sourceTree = "";
};
@@ -121,15 +163,43 @@
path = Runner;
sourceTree = "";
};
+ EBE5746596C64281CFA0DE38 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ FB022A6B9C9AEB20D026FCB2 /* Pods-Runner.debug-production.xcconfig */,
+ 601F984FDF5558763A8635DD /* Pods-Runner.debug-staging.xcconfig */,
+ 22B232B5E86F965A6C1830D8 /* Pods-Runner.debug-development.xcconfig */,
+ 10E5B9E262031C902DD1B249 /* Pods-Runner.release-production.xcconfig */,
+ 501143C986917B321786D428 /* Pods-Runner.release-staging.xcconfig */,
+ 81E39C638037771200F32E70 /* Pods-Runner.release-development.xcconfig */,
+ 026DBCB0D02796D54855CAF3 /* Pods-Runner.profile-production.xcconfig */,
+ 92E8B8128E94B43933123450 /* Pods-Runner.profile-staging.xcconfig */,
+ 89A395A321872B6E063A498A /* Pods-Runner.profile-development.xcconfig */,
+ 0255D76A5832986E0A86F2AC /* Pods-RunnerTests.debug-production.xcconfig */,
+ 9445D65E350D8709C4C139CD /* Pods-RunnerTests.debug-staging.xcconfig */,
+ 7DBB764AD6C65B3C25C23C10 /* Pods-RunnerTests.debug-development.xcconfig */,
+ 6E4632846EB0BE4B156FE20C /* Pods-RunnerTests.release-production.xcconfig */,
+ A7E769A3A68299F7667DB8C6 /* Pods-RunnerTests.release-staging.xcconfig */,
+ F6B0D67E2A6EE44082F9E4E2 /* Pods-RunnerTests.release-development.xcconfig */,
+ 32EF3FAE41B9B356F382CBDE /* Pods-RunnerTests.profile-production.xcconfig */,
+ C111C509C1FC95A507FCE256 /* Pods-RunnerTests.profile-staging.xcconfig */,
+ DB16D4796AE5ACAD09383056 /* Pods-RunnerTests.profile-development.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
+ 4EDE8DA2286F92DC0574C6E2 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
+ 636DF4E030D01DA56A394A86 /* Frameworks */,
);
buildRules = (
);
@@ -145,12 +215,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
+ E2BE5390CCA50B22FBCB74DF /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 4F0755FE1076BAAFB8B750DD /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -167,11 +239,11 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- BuildIndependentTargetsInParallel = NO;
- LastUpgradeCheck = 1430;
+ BuildIndependentTargetsInParallel = NO;
+ LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
- 331C8080294A63A400263BE5 = {
+ 331C8080294A63A400263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 97C146ED1CF9000F007C117D;
};
@@ -201,7 +273,7 @@
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 331C807F294A63A400263BE5 /* Resources */ = {
+ 331C807F294A63A400263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -238,6 +310,45 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
+ 4EDE8DA2286F92DC0574C6E2 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 4F0755FE1076BAAFB8B750DD /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -253,10 +364,32 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
+ E2BE5390CCA50B22FBCB74DF /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 331C807D294A63A400263BE5 /* Sources */ = {
+ 331C807D294A63A400263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -366,7 +499,7 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "Sudoku";
+ FLAVOR_APP_NAME = Sudoku;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -384,6 +517,7 @@
};
3C9C551B2B07AC99000E5FCD /* Debug-production */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 0255D76A5832986E0A86F2AC /* Pods-RunnerTests.debug-production.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -459,7 +593,7 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "Sudoku";
+ FLAVOR_APP_NAME = Sudoku;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -476,6 +610,7 @@
};
3C9C551E2B07ACA4000E5FCD /* Release-production */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 6E4632846EB0BE4B156FE20C /* Pods-RunnerTests.release-production.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -547,7 +682,7 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "Sudoku";
+ FLAVOR_APP_NAME = Sudoku;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -564,8 +699,9 @@
};
3C9C55242B07ACBD000E5FCD /* Profile-production */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 32EF3FAE41B9B356F382CBDE /* Pods-RunnerTests.profile-production.xcconfig */;
buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
+ BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
@@ -658,6 +794,7 @@
};
3C9C55272B07ACE7000E5FCD /* Debug-development */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 7DBB764AD6C65B3C25C23C10 /* Pods-RunnerTests.debug-development.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -748,6 +885,7 @@
};
3C9C552D2B07AD09000E5FCD /* Profile-development */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = DB16D4796AE5ACAD09383056 /* Pods-RunnerTests.profile-development.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -806,9 +944,9 @@
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = "Release-development";
@@ -838,6 +976,7 @@
};
3C9C55302B07AD1B000E5FCD /* Release-development */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = F6B0D67E2A6EE44082F9E4E2 /* Pods-RunnerTests.release-development.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -932,6 +1071,7 @@
};
3C9C55332B07AD26000E5FCD /* Debug-staging */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 9445D65E350D8709C4C139CD /* Pods-RunnerTests.debug-staging.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -1024,6 +1164,7 @@
};
3C9C55362B07AD41000E5FCD /* Release-staging */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = A7E769A3A68299F7667DB8C6 /* Pods-RunnerTests.release-staging.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -1112,6 +1253,7 @@
};
3C9C55392B07AD4B000E5FCD /* Profile-staging */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C111C509C1FC95A507FCE256 /* Pods-RunnerTests.profile-staging.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -1128,7 +1270,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3C9C551B2B07AC99000E5FCD /* Debug-production */,
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/app/view/app.dart b/lib/app/view/app.dart
index 051e38b..9665756 100644
--- a/lib/app/view/app.dart
+++ b/lib/app/view/app.dart
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:sudoku/counter/counter.dart';
import 'package:sudoku/l10n/l10n.dart';
+import 'package:sudoku/theme/theme.dart';
class App extends StatelessWidget {
const App({super.key});
@@ -8,12 +9,8 @@ class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
- theme: ThemeData(
- appBarTheme: AppBarTheme(
- backgroundColor: Theme.of(context).colorScheme.inversePrimary,
- ),
- useMaterial3: true,
- ),
+ theme: SudokuTheme.light,
+ darkTheme: SudokuTheme.dark,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: const CounterPage(),
diff --git a/lib/models/sudoku.dart b/lib/models/sudoku.dart
index f1ca4fe..2cd58d9 100644
--- a/lib/models/sudoku.dart
+++ b/lib/models/sudoku.dart
@@ -48,10 +48,10 @@ class Sudoku extends Equatable {
const Sudoku({required this.blocks});
/// Converts raw data to a [Sudoku] model.
- ///
+ ///
/// The `generated` list defines the initial state of the puzzle,
/// and the `answer` defines the completed state.
- ///
+ ///
/// Throws a [SudokuInvalidRawDataException] when validation fails
/// on raw data. The validation checks for 3 things -
/// - Whether the generated and asnswer have same number of items.
@@ -94,7 +94,6 @@ class Sudoku extends Equatable {
/// List of [Block]s representing the current state of the [Sudoku].
final List blocks;
-
/// Gets the dimension of the [Sudoku], i.e., the number of row or column.
///
/// A 3 x 3 Sudoku will have 81 blocks, and dimesion will be 9.
diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart
new file mode 100644
index 0000000..847486c
--- /dev/null
+++ b/lib/theme/theme.dart
@@ -0,0 +1,59 @@
+import 'package:flutter/material.dart';
+
+/// Defines [ThemeData] for Sudoku App UI.
+class SudokuTheme {
+ /// Light theme with blue accent
+ static ThemeData get light {
+ return ThemeData(
+ scaffoldBackgroundColor: const Color(0xFFF8F8F8),
+ appBarTheme: const AppBarTheme(
+ color: Color(0xFFF8F8F8), // Light background color
+ ),
+ colorScheme: ColorScheme.fromSeed(
+ seedColor: const Color(0xFF3F51B5), // Blue accent color
+ ),
+ snackBarTheme: const SnackBarThemeData(
+ behavior: SnackBarBehavior.floating,
+ ),
+ elevatedButtonTheme: ElevatedButtonThemeData(
+ style: ElevatedButton.styleFrom(
+ backgroundColor: const Color(0xFF3F51B5),
+ foregroundColor: Colors.white,
+ elevation: 0,
+ ),
+ ),
+ floatingActionButtonTheme: const FloatingActionButtonThemeData(
+ backgroundColor: Color(0xFF3F51B5),
+ foregroundColor: Colors.white,
+ ),
+ );
+ }
+
+ /// Dark theme with same blue accent
+ static ThemeData get dark {
+ return ThemeData(
+ scaffoldBackgroundColor: const Color(0xFF212121),
+ appBarTheme: const AppBarTheme(
+ color: Color(0xFF212121), // Dark background color
+ ),
+ colorScheme: ColorScheme.fromSeed(
+ brightness: Brightness.dark,
+ seedColor: const Color(0xFF3F51B5), // Blue accent color
+ ),
+ snackBarTheme: const SnackBarThemeData(
+ behavior: SnackBarBehavior.floating,
+ ),
+ elevatedButtonTheme: ElevatedButtonThemeData(
+ style: ElevatedButton.styleFrom(
+ backgroundColor: const Color(0xFF3F51B5),
+ foregroundColor: Colors.white,
+ elevation: 0,
+ ),
+ ),
+ floatingActionButtonTheme: const FloatingActionButtonThemeData(
+ backgroundColor: Color(0xFF3F51B5),
+ foregroundColor: Colors.white,
+ ),
+ );
+ }
+}
diff --git a/lib/typography/font_weights.dart b/lib/typography/font_weights.dart
new file mode 100644
index 0000000..d3279e2
--- /dev/null
+++ b/lib/typography/font_weights.dart
@@ -0,0 +1,31 @@
+import 'package:flutter/widgets.dart';
+
+/// Defines font weights for Sudoku App UI.
+abstract class SudokuFontWeight {
+ /// [FontWeight] value of `w900`
+ static const FontWeight black = FontWeight.w900;
+
+ /// [FontWeight] value of `w800`
+ static const FontWeight extraBold = FontWeight.w800;
+
+ /// [FontWeight] value of `w700`
+ static const FontWeight bold = FontWeight.w700;
+
+ /// [FontWeight] value of `w600`
+ static const FontWeight semiBold = FontWeight.w600;
+
+ /// [FontWeight] value of `w500`
+ static const FontWeight medium = FontWeight.w500;
+
+ /// [FontWeight] value of `w400`
+ static const FontWeight regular = FontWeight.w400;
+
+ /// [FontWeight] value of `w300`
+ static const FontWeight light = FontWeight.w300;
+
+ /// [FontWeight] value of `w200`
+ static const FontWeight extraLight = FontWeight.w200;
+
+ /// [FontWeight] value of `w100`
+ static const FontWeight thin = FontWeight.w100;
+}
diff --git a/lib/typography/text_styles.dart b/lib/typography/text_styles.dart
new file mode 100644
index 0000000..3b0affa
--- /dev/null
+++ b/lib/typography/text_styles.dart
@@ -0,0 +1,106 @@
+import 'package:flutter/widgets.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:sudoku/typography/typography.dart';
+
+/// Defines [TextStyle]s for Sudoku App UI.
+class SudokuTextStyle {
+ /// Headline 1 Text Style
+ static TextStyle get headline1 {
+ return _baseTextStyle.copyWith(
+ fontSize: 56,
+ fontWeight: SudokuFontWeight.medium,
+ );
+ }
+
+ /// Headline 2 Text Style
+ static TextStyle get headline2 {
+ return _baseTextStyle.copyWith(
+ fontSize: 30,
+ fontWeight: SudokuFontWeight.regular,
+ );
+ }
+
+ /// Headline 3 Text Style
+ static TextStyle get headline3 {
+ return _baseTextStyle.copyWith(
+ fontSize: 24,
+ fontWeight: SudokuFontWeight.regular,
+ );
+ }
+
+ /// Headline 4 Text Style
+ static TextStyle get headline4 {
+ return _baseTextStyle.copyWith(
+ fontSize: 22,
+ fontWeight: SudokuFontWeight.bold,
+ );
+ }
+
+ /// Headline 5 Text Style
+ static TextStyle get headline5 {
+ return _baseTextStyle.copyWith(
+ fontSize: 22,
+ fontWeight: SudokuFontWeight.medium,
+ );
+ }
+
+ /// Headline 6 Text Style
+ static TextStyle get headline6 {
+ return _baseTextStyle.copyWith(
+ fontSize: 22,
+ fontWeight: SudokuFontWeight.bold,
+ );
+ }
+
+ /// Subtitle 1 Text Style
+ static TextStyle get subtitle1 {
+ return _baseTextStyle.copyWith(
+ fontSize: 16,
+ fontWeight: SudokuFontWeight.bold,
+ );
+ }
+
+ /// Subtitle 2 Text Style
+ static TextStyle get subtitle2 {
+ return _baseTextStyle.copyWith(
+ fontSize: 14,
+ fontWeight: SudokuFontWeight.bold,
+ );
+ }
+
+ /// Body Text 1 Text Style
+ static TextStyle get bodyText1 {
+ return _baseTextStyle.copyWith(
+ fontSize: 18,
+ fontWeight: SudokuFontWeight.medium,
+ );
+ }
+
+ /// Body Text 2 Text Style (the default)
+ static TextStyle get bodyText2 {
+ return _baseTextStyle.copyWith(
+ fontSize: 16,
+ fontWeight: SudokuFontWeight.regular,
+ );
+ }
+
+ /// Caption Text Style
+ static TextStyle get caption {
+ return _baseTextStyle.copyWith(
+ fontSize: 14,
+ fontWeight: SudokuFontWeight.regular,
+ );
+ }
+
+ /// Button Text Style
+ static TextStyle get button {
+ return _baseTextStyle.copyWith(
+ fontSize: 16,
+ fontWeight: SudokuFontWeight.medium,
+ );
+ }
+
+ static final _baseTextStyle = GoogleFonts.inter(
+ fontWeight: SudokuFontWeight.regular,
+ );
+}
diff --git a/lib/typography/typography.dart b/lib/typography/typography.dart
new file mode 100644
index 0000000..7a591bd
--- /dev/null
+++ b/lib/typography/typography.dart
@@ -0,0 +1,2 @@
+export 'font_weights.dart';
+export 'text_styles.dart';
diff --git a/pubspec.lock b/pubspec.lock
index ae37727..e5bba54 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -129,6 +129,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.1"
+ ffi:
+ dependency: transitive
+ description:
+ name: ffi
+ sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
file:
dependency: transitive
description:
@@ -176,6 +184,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.2"
+ google_fonts:
+ dependency: "direct main"
+ description:
+ name: google_fonts
+ sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.2.1"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
http_multi_server:
dependency: transitive
description:
@@ -320,6 +344,70 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.0"
+ path_provider:
+ dependency: transitive
+ description:
+ name: path_provider
+ sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3"
+ path_provider_android:
+ dependency: transitive
+ description:
+ name: path_provider_android
+ sha256: bca87b0165ffd7cdb9cad8edd22d18d2201e886d9a9f19b4fb3452ea7df3a72a
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.6"
+ path_provider_foundation:
+ dependency: transitive
+ description:
+ name: path_provider_foundation
+ sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
+ path_provider_linux:
+ dependency: transitive
+ description:
+ name: path_provider_linux
+ sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ path_provider_windows:
+ dependency: transitive
+ description:
+ name: path_provider_windows
+ sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.5"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
pool:
dependency: transitive
description:
@@ -525,6 +613,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.1"
+ win32:
+ dependency: transitive
+ description:
+ name: win32
+ sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.5.1"
+ xdg_directories:
+ dependency: transitive
+ description:
+ name: xdg_directories
+ sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
yaml:
dependency: transitive
description:
@@ -535,4 +639,4 @@ packages:
version: "3.1.2"
sdks:
dart: ">=3.4.0 <4.0.0"
- flutter: ">=3.18.0-18.0.pre.54"
+ flutter: ">=3.22.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index e62c01a..0fcbc73 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -14,6 +14,7 @@ dependencies:
flutter_bloc: ^8.1.4
flutter_localizations:
sdk: flutter
+ google_fonts: ^6.2.1
intl: ^0.19.0
dev_dependencies: