🍱 Add app icon
✨ Multiple pages
			
			
| @@ -2,7 +2,7 @@ | ||||
|     <application | ||||
|         android:label="simple_math_calc" | ||||
|         android:name="${applicationName}" | ||||
|         android:icon="@mipmap/ic_launcher"> | ||||
|         android:icon="@mipmap/launcher_icon"> | ||||
|         <activity | ||||
|             android:name=".MainActivity" | ||||
|             android:exported="true" | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-hdpi/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 9.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-mdpi/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-v21/background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 69 B | 
| @@ -1,12 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Modify this file to customize your launch splash screen --> | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="?android:colorBackground" /> | ||||
|  | ||||
|     <!-- You can insert your own image assets here --> | ||||
|     <!-- <item> | ||||
|         <bitmap | ||||
|             android:gravity="center" | ||||
|             android:src="@mipmap/launch_image" /> | ||||
|     </item> --> | ||||
|     <item> | ||||
|         <bitmap android:gravity="fill" android:src="@drawable/background"/> | ||||
|     </item> | ||||
|     <item> | ||||
|         <bitmap android:gravity="center" android:src="@drawable/splash"/> | ||||
|     </item> | ||||
| </layer-list> | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-xhdpi/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-xxhdpi/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable-xxxhdpi/splash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 40 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/drawable/background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 69 B | 
| @@ -1,12 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Modify this file to customize your launch splash screen --> | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="@android:color/white" /> | ||||
|  | ||||
|     <!-- You can insert your own image assets here --> | ||||
|     <!-- <item> | ||||
|         <bitmap | ||||
|             android:gravity="center" | ||||
|             android:src="@mipmap/launch_image" /> | ||||
|     </item> --> | ||||
|     <item> | ||||
|         <bitmap android:gravity="fill" android:src="@drawable/background"/> | ||||
|     </item> | ||||
|     <item> | ||||
|         <bitmap android:gravity="center" android:src="@drawable/splash"/> | ||||
|     </item> | ||||
| </layer-list> | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-hdpi/launcher_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-mdpi/launcher_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 995 B | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.3 KiB | 
							
								
								
									
										19
									
								
								android/app/src/main/res/values-night-v31/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,19 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> | ||||
|     <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||
|         <item name="android:forceDarkAllowed">false</item> | ||||
|         <item name="android:windowFullscreen">false</item> | ||||
|         <item name="android:windowDrawsSystemBarBackgrounds">false</item> | ||||
|         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|          Flutter UI initializes, as well as behind your Flutter UI while its | ||||
|          running. | ||||
|           | ||||
|          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||
|     <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||
|         <item name="android:windowBackground">?android:colorBackground</item> | ||||
|     </style> | ||||
| </resources> | ||||
| @@ -5,6 +5,10 @@ | ||||
|         <!-- Show a splash screen on the activity. Automatically removed when | ||||
|              the Flutter engine draws its first frame --> | ||||
|         <item name="android:windowBackground">@drawable/launch_background</item> | ||||
|         <item name="android:forceDarkAllowed">false</item> | ||||
|         <item name="android:windowFullscreen">false</item> | ||||
|         <item name="android:windowDrawsSystemBarBackgrounds">false</item> | ||||
|         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|   | ||||
							
								
								
									
										19
									
								
								android/app/src/main/res/values-v31/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,19 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> | ||||
|     <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||
|         <item name="android:forceDarkAllowed">false</item> | ||||
|         <item name="android:windowFullscreen">false</item> | ||||
|         <item name="android:windowDrawsSystemBarBackgrounds">false</item> | ||||
|         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|          Flutter UI initializes, as well as behind your Flutter UI while its | ||||
|          running. | ||||
|           | ||||
|          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||
|     <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||
|         <item name="android:windowBackground">?android:colorBackground</item> | ||||
|     </style> | ||||
| </resources> | ||||
| @@ -5,6 +5,10 @@ | ||||
|         <!-- Show a splash screen on the activity. Automatically removed when | ||||
|              the Flutter engine draws its first frame --> | ||||
|         <item name="android:windowBackground">@drawable/launch_background</item> | ||||
|         <item name="android:forceDarkAllowed">false</item> | ||||
|         <item name="android:windowFullscreen">false</item> | ||||
|         <item name="android:windowDrawsSystemBarBackgrounds">false</item> | ||||
|         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								assets/icon.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 74 KiB | 
							
								
								
									
										29
									
								
								ios/Podfile.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,29 @@ | ||||
| PODS: | ||||
|   - Flutter (1.0.0) | ||||
|   - flutter_native_splash (2.4.3): | ||||
|     - Flutter | ||||
|   - path_provider_foundation (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|  | ||||
| DEPENDENCIES: | ||||
|   - Flutter (from `Flutter`) | ||||
|   - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) | ||||
|   - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) | ||||
|  | ||||
| EXTERNAL SOURCES: | ||||
|   Flutter: | ||||
|     :path: Flutter | ||||
|   flutter_native_splash: | ||||
|     :path: ".symlinks/plugins/flutter_native_splash/ios" | ||||
|   path_provider_foundation: | ||||
|     :path: ".symlinks/plugins/path_provider_foundation/darwin" | ||||
|  | ||||
| SPEC CHECKSUMS: | ||||
|   Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 | ||||
|   flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf | ||||
|   path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 | ||||
|  | ||||
| PODFILE CHECKSUM: 3c63482e143d1b91d2d2560aee9fb04ecc74ac7e | ||||
|  | ||||
| COCOAPODS: 1.16.2 | ||||
| @@ -8,12 +8,14 @@ | ||||
|  | ||||
| /* Begin PBXBuildFile section */ | ||||
| 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | ||||
| 		192251534B553BDFE245A7A6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62F0BECE6836CAFF14202A0F /* Pods_Runner.framework */; }; | ||||
| 		331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; | ||||
| 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | ||||
| 		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 */; }; | ||||
| 		F397DB814CC59F7F60396679 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D569FF139660C03C66DAF3F /* Pods_RunnerTests.framework */; }; | ||||
| /* End PBXBuildFile section */ | ||||
|  | ||||
| /* Begin PBXContainerItemProxy section */ | ||||
| @@ -42,9 +44,14 @@ | ||||
| /* Begin PBXFileReference section */ | ||||
| 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | ||||
| 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | ||||
| 		14EA99134C948AD659698B12 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; }; | ||||
| 		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 = "<group>"; }; | ||||
| 		4766296653CC7F86E4FDF96E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		4C1CC5F96EC4EED144160B64 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		62F0BECE6836CAFF14202A0F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		6D569FF139660C03C66DAF3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; | ||||
| 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||||
| 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; | ||||
| @@ -55,6 +62,9 @@ | ||||
| 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||||
| 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||||
| 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||
| 		BAC0E182EE058A579F8BAF8B /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		D2325C3115042CB4C1A30C20 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		EA2DD3AF98ED146A30B33E80 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| /* End PBXFileReference section */ | ||||
|  | ||||
| /* Begin PBXFrameworksBuildPhase section */ | ||||
| @@ -62,12 +72,35 @@ | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				192251534B553BDFE245A7A6 /* Pods_Runner.framework in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		C67D59264A6B91E04EE0D429 /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				F397DB814CC59F7F60396679 /* Pods_RunnerTests.framework in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXFrameworksBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXGroup section */ | ||||
| 		0D5FE6B3751F204B53864ADD /* Pods */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				4C1CC5F96EC4EED144160B64 /* Pods-Runner.debug.xcconfig */, | ||||
| 				4766296653CC7F86E4FDF96E /* Pods-Runner.release.xcconfig */, | ||||
| 				14EA99134C948AD659698B12 /* Pods-Runner.profile.xcconfig */, | ||||
| 				D2325C3115042CB4C1A30C20 /* Pods-RunnerTests.debug.xcconfig */, | ||||
| 				EA2DD3AF98ED146A30B33E80 /* Pods-RunnerTests.release.xcconfig */, | ||||
| 				BAC0E182EE058A579F8BAF8B /* Pods-RunnerTests.profile.xcconfig */, | ||||
| 			); | ||||
| 			name = Pods; | ||||
| 			path = Pods; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		331C8082294A63A400263BE5 /* RunnerTests */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| @@ -76,6 +109,15 @@ | ||||
| 			path = RunnerTests; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		7DB90303BBE910826075E857 /* Frameworks */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				62F0BECE6836CAFF14202A0F /* Pods_Runner.framework */, | ||||
| 				6D569FF139660C03C66DAF3F /* Pods_RunnerTests.framework */, | ||||
| 			); | ||||
| 			name = Frameworks; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		9740EEB11CF90186004384FC /* Flutter */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| @@ -94,6 +136,8 @@ | ||||
| 				97C146F01CF9000F007C117D /* Runner */, | ||||
| 				97C146EF1CF9000F007C117D /* Products */, | ||||
| 				331C8082294A63A400263BE5 /* RunnerTests */, | ||||
| 				0D5FE6B3751F204B53864ADD /* Pods */, | ||||
| 				7DB90303BBE910826075E857 /* Frameworks */, | ||||
| 			); | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| @@ -128,8 +172,10 @@ | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; | ||||
| 			buildPhases = ( | ||||
| 				AA03816EC30BB68E2A727AC7 /* [CP] Check Pods Manifest.lock */, | ||||
| 				331C807D294A63A400263BE5 /* Sources */, | ||||
| 				331C807F294A63A400263BE5 /* Resources */, | ||||
| 				C67D59264A6B91E04EE0D429 /* Frameworks */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| @@ -145,12 +191,14 @@ | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; | ||||
| 			buildPhases = ( | ||||
| 				9A125E927908EE0DB6561956 /* [CP] Check Pods Manifest.lock */, | ||||
| 				9740EEB61CF901F6004384FC /* Run Script */, | ||||
| 				97C146EA1CF9000F007C117D /* Sources */, | ||||
| 				97C146EB1CF9000F007C117D /* Frameworks */, | ||||
| 				97C146EC1CF9000F007C117D /* Resources */, | ||||
| 				9705A1C41CF9048500538489 /* Embed Frameworks */, | ||||
| 				3B06AD1E1E4923F5004D2608 /* Thin Binary */, | ||||
| 				837BB4DB550AC6AACB7F8212 /* [CP] Embed Pods Frameworks */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| @@ -238,6 +286,23 @@ | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; | ||||
| 		}; | ||||
| 		837BB4DB550AC6AACB7F8212 /* [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,6 +318,50 @@ | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; | ||||
| 		}; | ||||
| 		9A125E927908EE0DB6561956 /* [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; | ||||
| 		}; | ||||
| 		AA03816EC30BB68E2A727AC7 /* [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; | ||||
| 		}; | ||||
| /* End PBXShellScriptBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXSourcesBuildPhase section */ | ||||
| @@ -379,6 +488,7 @@ | ||||
| 		}; | ||||
| 		331C8088294A63A400263BE5 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = D2325C3115042CB4C1A30C20 /* Pods-RunnerTests.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| @@ -396,6 +506,7 @@ | ||||
| 		}; | ||||
| 		331C8089294A63A400263BE5 /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = EA2DD3AF98ED146A30B33E80 /* Pods-RunnerTests.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| @@ -411,6 +522,7 @@ | ||||
| 		}; | ||||
| 		331C808A294A63A400263BE5 /* Profile */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = BAC0E182EE058A579F8BAF8B /* Pods-RunnerTests.profile.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| @@ -428,7 +540,7 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| @@ -485,7 +597,7 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
|   | ||||
							
								
								
									
										3
									
								
								ios/Runner.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
								
							
							
						
						| @@ -4,4 +4,7 @@ | ||||
|    <FileRef | ||||
|       location = "group:Runner.xcodeproj"> | ||||
|    </FileRef> | ||||
|    <FileRef | ||||
|       location = "group:Pods/Pods.xcodeproj"> | ||||
|    </FileRef> | ||||
| </Workspace> | ||||
|   | ||||
| @@ -1,122 +1 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-20x20@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-20x20@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-40x40@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-40x40@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "60x60", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-60x60@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "60x60", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-60x60@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-20x20@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-20x20@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-29x29@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-29x29@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-40x40@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-40x40@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "76x76", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-76x76@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "76x76", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-76x76@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "83.5x83.5", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-83.5x83.5@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "1024x1024", | ||||
|       "idiom" : "ios-marketing", | ||||
|       "filename" : "Icon-App-1024x1024@1x.png", | ||||
|       "scale" : "1x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|   } | ||||
| } | ||||
| {"images":[{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@3x.png","scale":"3x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}} | ||||
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 40 KiB | 
| Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 354 B | 
| Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 804 B | 
| Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 568 B | 
| Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 804 B | 
| Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 2.7 KiB | 
| After Width: | Height: | Size: 1.0 KiB | 
| After Width: | Height: | Size: 2.2 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.1 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 3.2 KiB | 
| Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.3 KiB | 
| Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.7 KiB | 
							
								
								
									
										21
									
								
								ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "filename" : "background.png", | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "3x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 69 B | 
| @@ -1,23 +1,23 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage.png", | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "3x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
|   | ||||
| Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 5.7 KiB | 
| Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 26 KiB | 
| @@ -16,13 +16,19 @@ | ||||
|                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||||
|                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||
|                         <subviews> | ||||
|                             <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"> | ||||
|                             </imageView> | ||||
|                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI"/> | ||||
|                             <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"></imageView> | ||||
|                         </subviews> | ||||
|                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||||
|                         <constraints> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="3T2-ad-Qdv"/> | ||||
|                             <constraint firstItem="tWc-Dq-wcI" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="RPx-PI-7Xg"/> | ||||
|                             <constraint firstItem="tWc-Dq-wcI" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="SdS-ul-q2q"/> | ||||
|                             <constraint firstAttribute="trailing" secondItem="tWc-Dq-wcI" secondAttribute="trailing" id="Swv-Gf-Rwn"/> | ||||
|                             <constraint firstAttribute="trailing" secondItem="YRO-k0-Ey4" secondAttribute="trailing" id="TQA-XW-tRk"/> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="duK-uY-Gun"/> | ||||
|                             <constraint firstItem="tWc-Dq-wcI" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="kV7-tw-vXt"/> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="xPn-NY-SIU"/> | ||||
|                         </constraints> | ||||
|                     </view> | ||||
|                 </viewController> | ||||
| @@ -32,6 +38,7 @@ | ||||
|         </scene> | ||||
|     </scenes> | ||||
|     <resources> | ||||
|         <image name="LaunchImage" width="168" height="185"/> | ||||
|         <image name="LaunchImage" width="1024" height="1024"/> | ||||
|         <image name="LaunchBackground" width="1" height="1"/> | ||||
|     </resources> | ||||
| </document> | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<dict> | ||||
| 		<key>CFBundleDevelopmentRegion</key> | ||||
| 		<string>$(DEVELOPMENT_LANGUAGE)</string> | ||||
| 		<key>CFBundleDisplayName</key> | ||||
| @@ -45,5 +45,7 @@ | ||||
| 		<true/> | ||||
| 		<key>UIApplicationSupportsIndirectInputEvents</key> | ||||
| 		<true/> | ||||
| </dict> | ||||
| 		<key>UIStatusBarHidden</key> | ||||
| 		<false/> | ||||
| 	</dict> | ||||
| </plist> | ||||
|   | ||||
							
								
								
									
										211
									
								
								lib/main.dart
									
									
									
									
									
								
							
							
						
						| @@ -1,9 +1,11 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:google_fonts/google_fonts.dart'; | ||||
| import 'package:latext/latext.dart'; | ||||
| import 'package:simple_math_calc/models/calculation_step.dart'; | ||||
| import 'package:simple_math_calc/solver.dart'; | ||||
| import 'dart:math'; | ||||
| import 'package:go_router/go_router.dart'; | ||||
| import 'screens/home_screen.dart'; | ||||
|  | ||||
| final GoRouter _router = GoRouter( | ||||
|   routes: [GoRoute(path: '/', builder: (context, state) => const HomeScreen())], | ||||
| ); | ||||
|  | ||||
| void main() async { | ||||
|   runApp(const CalcApp()); | ||||
| @@ -14,7 +16,7 @@ class CalcApp extends StatelessWidget { | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return MaterialApp( | ||||
|     return MaterialApp.router( | ||||
|       title: '方程计算器', | ||||
|       theme: ThemeData( | ||||
|         primarySwatch: Colors.blue, | ||||
| @@ -23,197 +25,14 @@ class CalcApp extends StatelessWidget { | ||||
|           Theme.of(context).textTheme, // Inherit existing text theme | ||||
|         ), | ||||
|       ), | ||||
|       home: const CalculatorHomePage(), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| class CalculatorHomePage extends StatefulWidget { | ||||
|   const CalculatorHomePage({super.key}); | ||||
|  | ||||
|   @override | ||||
|   State<CalculatorHomePage> createState() => _CalculatorHomePageState(); | ||||
| } | ||||
|  | ||||
| class _CalculatorHomePageState extends State<CalculatorHomePage> { | ||||
|   final TextEditingController _controller = TextEditingController(); | ||||
|   final SolverService _solverService = SolverService(); | ||||
|  | ||||
|   CalculationResult? _result; | ||||
|   bool _isLoading = false; | ||||
|  | ||||
|   void _solveEquation() { | ||||
|     if (_controller.text.isEmpty) { | ||||
|       return; | ||||
|     } | ||||
|     setState(() { | ||||
|       _isLoading = true; | ||||
|       _result = null; // 清除上次结果 | ||||
|     }); | ||||
|  | ||||
|     try { | ||||
|       // 调用核心服务来解决问题 | ||||
|       final result = _solverService.solve(_controller.text); | ||||
|       setState(() { | ||||
|         _result = result; | ||||
|       }); | ||||
|     } catch (e) { | ||||
|       // 错误处理 | ||||
|       setState(() { | ||||
|         _result = CalculationResult( | ||||
|           steps: [], | ||||
|           finalAnswer: "错误: ${e.toString()}", | ||||
|         ); | ||||
|       }); | ||||
|     } finally { | ||||
|       setState(() { | ||||
|         _isLoading = false; | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text('方程与表达式计算器'), | ||||
|         centerTitle: false, | ||||
|         leading: const Icon(Icons.calculate_outlined), | ||||
|       ), | ||||
|       body: Column( | ||||
|         children: [ | ||||
|           Padding( | ||||
|             padding: const EdgeInsets.only(left: 16.0, right: 16.0, top: 16.0), | ||||
|             child: Row( | ||||
|               spacing: 8, | ||||
|               children: [ | ||||
|                 Expanded( | ||||
|                   child: TextField( | ||||
|                     controller: _controller, | ||||
|                     textAlign: TextAlign.center, | ||||
|                     decoration: InputDecoration( | ||||
|                       border: const OutlineInputBorder(), | ||||
|                       labelText: '输入方程或表达式', | ||||
|                       floatingLabelAlignment: FloatingLabelAlignment.center, | ||||
|                       hintText: '例如: 2x^2 - 8x + 6 = 0', | ||||
|                     ), | ||||
|                     onSubmitted: (_) => _solveEquation(), | ||||
|                   ), | ||||
|                 ), | ||||
|                 IconButton( | ||||
|                   onPressed: _solveEquation, | ||||
|                   icon: Icon(Icons.play_arrow), | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|           ), | ||||
|           Expanded( | ||||
|             child: _isLoading | ||||
|                 ? const Center(child: CircularProgressIndicator()) | ||||
|                 : _result == null | ||||
|                 ? const Center(child: Text('请输入方程开始计算')) | ||||
|                 : buildResultView(_result!), | ||||
|           ), | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   // 构建结果展示视图 | ||||
|   Widget buildResultView(CalculationResult result) { | ||||
|     return ListView( | ||||
|       padding: EdgeInsets.only( | ||||
|         left: 16, | ||||
|         right: 16, | ||||
|         bottom: MediaQuery.of(context).padding.bottom + 16, | ||||
|         top: 16, | ||||
|       ), | ||||
|       children: [ | ||||
|         ...result.steps.map( | ||||
|           (step) => Card( | ||||
|             margin: const EdgeInsets.symmetric(vertical: 8), | ||||
|             child: ClipRRect( | ||||
|               borderRadius: const BorderRadius.all(Radius.circular(8)), | ||||
|               child: Stack( | ||||
|                 children: [ | ||||
|                   Padding( | ||||
|                     padding: const EdgeInsets.only( | ||||
|                       left: 12, | ||||
|                       right: 12, | ||||
|                       bottom: 4, | ||||
|                       top: 16, | ||||
|                     ), | ||||
|                     child: Column( | ||||
|                       crossAxisAlignment: CrossAxisAlignment.center, | ||||
|                       children: [ | ||||
|                         Text( | ||||
|                           step.title, | ||||
|                           style: Theme.of(context).textTheme.titleMedium, | ||||
|                         ), | ||||
|                         const SizedBox(height: 4), | ||||
|                         SelectableText(step.explanation), | ||||
|                         Center( | ||||
|                           child: LaTexT( | ||||
|                             laTeXCode: Text( | ||||
|                               step.formula, | ||||
|                               style: Theme.of(context).textTheme.titleMedium, | ||||
|                             ), | ||||
|                           ), | ||||
|                         ), | ||||
|                       ], | ||||
|                     ), | ||||
|                   ), | ||||
|                   Positioned( | ||||
|                     left: -8, | ||||
|                     top: -8, | ||||
|                     child: Transform.rotate( | ||||
|                       angle: pi / -5, | ||||
|                       child: Opacity( | ||||
|                         opacity: 0.8, | ||||
|                         child: Badge( | ||||
|                           backgroundColor: Theme.of( | ||||
|                             context, | ||||
|                           ).colorScheme.primary, | ||||
|                           label: Text( | ||||
|                             step.stepNumber.toString(), | ||||
|                             style: TextStyle(fontSize: 32), | ||||
|                           ), | ||||
|                         ), | ||||
|                       ), | ||||
|                     ), | ||||
|                   ), | ||||
|                 ], | ||||
|               ), | ||||
|             ), | ||||
|           ), | ||||
|         ), | ||||
|         const SizedBox(height: 10), | ||||
|         Card( | ||||
|           color: Theme.of(context).colorScheme.primaryContainer, | ||||
|           child: Padding( | ||||
|             padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), | ||||
|             child: Column( | ||||
|               children: [ | ||||
|                 const SizedBox(height: 16), | ||||
|                 Text( | ||||
|                   "最终答案", | ||||
|                   style: Theme.of(context).textTheme.titleLarge?.copyWith( | ||||
|                     color: Theme.of(context).colorScheme.onPrimaryContainer, | ||||
|                   ), | ||||
|                 ), | ||||
|                 LaTexT( | ||||
|                   laTeXCode: Text( | ||||
|                     result.finalAnswer, | ||||
|                     style: Theme.of(context).textTheme.titleMedium?.copyWith( | ||||
|                       color: Theme.of(context).colorScheme.onPrimaryContainer, | ||||
|                     ), | ||||
|                   ), | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|           ), | ||||
|         ), | ||||
|       ], | ||||
|       darkTheme: ThemeData.dark().copyWith( | ||||
|         primaryColor: Colors.blue, | ||||
|         textTheme: GoogleFonts.notoSerifScTextTheme( | ||||
|           Theme.of(context).textTheme, | ||||
|         ), | ||||
|       ), | ||||
|       themeMode: ThemeMode.system, | ||||
|       routerConfig: _router, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										50
									
								
								lib/screens/about_page.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,50 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| class AboutPage extends StatelessWidget { | ||||
|   const AboutPage({super.key}); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar(title: const Text('About')), | ||||
|       body: Padding( | ||||
|         padding: const EdgeInsets.all(16.0), | ||||
|         child: Column( | ||||
|           crossAxisAlignment: CrossAxisAlignment.center, | ||||
|           children: [ | ||||
|             const SizedBox(height: 20), | ||||
|             Icon( | ||||
|               Icons.calculate, | ||||
|               size: 80, | ||||
|               color: Theme.of(context).colorScheme.primary, | ||||
|             ), | ||||
|             const SizedBox(height: 20), | ||||
|             Text( | ||||
|               '方程计算器', | ||||
|               style: Theme.of(context).textTheme.headlineMedium, | ||||
|               textAlign: TextAlign.center, | ||||
|             ), | ||||
|             const SizedBox(height: 10), | ||||
|             Text( | ||||
|               'Version 1.0.0', | ||||
|               style: Theme.of(context).textTheme.bodyLarge, | ||||
|               textAlign: TextAlign.center, | ||||
|             ), | ||||
|             const SizedBox(height: 20), | ||||
|             Text( | ||||
|               '这是一个用于求解方程和表达式的计算器应用。\n\n支持多种类型的数学计算,包括代数方程、表达式求值等。', | ||||
|               style: Theme.of(context).textTheme.bodyMedium, | ||||
|               textAlign: TextAlign.center, | ||||
|             ), | ||||
|             const SizedBox(height: 30), | ||||
|             Text( | ||||
|               '© 2025 Simple Math Calculator', | ||||
|               style: Theme.of(context).textTheme.bodySmall, | ||||
|               textAlign: TextAlign.center, | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										195
									
								
								lib/screens/calculator_home_page.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,195 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:latext/latext.dart'; | ||||
| import 'package:simple_math_calc/models/calculation_step.dart'; | ||||
| import 'package:simple_math_calc/solver.dart'; | ||||
| import 'dart:math'; | ||||
|  | ||||
| class CalculatorHomePage extends StatefulWidget { | ||||
|   const CalculatorHomePage({super.key}); | ||||
|  | ||||
|   @override | ||||
|   State<CalculatorHomePage> createState() => _CalculatorHomePageState(); | ||||
| } | ||||
|  | ||||
| class _CalculatorHomePageState extends State<CalculatorHomePage> { | ||||
|   final TextEditingController _controller = TextEditingController(); | ||||
|   final SolverService _solverService = SolverService(); | ||||
|  | ||||
|   CalculationResult? _result; | ||||
|   bool _isLoading = false; | ||||
|  | ||||
|   void _solveEquation() { | ||||
|     if (_controller.text.isEmpty) { | ||||
|       return; | ||||
|     } | ||||
|     setState(() { | ||||
|       _isLoading = true; | ||||
|       _result = null; // 清除上次结果 | ||||
|     }); | ||||
|  | ||||
|     try { | ||||
|       // 调用核心服务来解决问题 | ||||
|       final result = _solverService.solve(_controller.text); | ||||
|       setState(() { | ||||
|         _result = result; | ||||
|       }); | ||||
|     } catch (e) { | ||||
|       // 错误处理 | ||||
|       setState(() { | ||||
|         _result = CalculationResult( | ||||
|           steps: [], | ||||
|           finalAnswer: "错误: ${e.toString()}", | ||||
|         ); | ||||
|       }); | ||||
|     } finally { | ||||
|       setState(() { | ||||
|         _isLoading = false; | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text('方程与表达式计算器'), | ||||
|         centerTitle: false, | ||||
|         leading: const Icon(Icons.calculate_outlined), | ||||
|       ), | ||||
|       body: Column( | ||||
|         children: [ | ||||
|           Padding( | ||||
|             padding: const EdgeInsets.only(left: 16.0, right: 16.0, top: 16.0), | ||||
|             child: Row( | ||||
|               spacing: 8, | ||||
|               children: [ | ||||
|                 Expanded( | ||||
|                   child: TextField( | ||||
|                     controller: _controller, | ||||
|                     textAlign: TextAlign.center, | ||||
|                     decoration: InputDecoration( | ||||
|                       border: const OutlineInputBorder(), | ||||
|                       labelText: '输入方程或表达式', | ||||
|                       floatingLabelAlignment: FloatingLabelAlignment.center, | ||||
|                       hintText: '例如: 2x^2 - 8x + 6 = 0', | ||||
|                     ), | ||||
|                     onSubmitted: (_) => _solveEquation(), | ||||
|                   ), | ||||
|                 ), | ||||
|                 IconButton( | ||||
|                   onPressed: _solveEquation, | ||||
|                   icon: Icon(Icons.play_arrow), | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|           ), | ||||
|           Expanded( | ||||
|             child: _isLoading | ||||
|                 ? const Center(child: CircularProgressIndicator()) | ||||
|                 : _result == null | ||||
|                 ? const Center(child: Text('请输入方程开始计算')) | ||||
|                 : buildResultView(_result!), | ||||
|           ), | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   // 构建结果展示视图 | ||||
|   Widget buildResultView(CalculationResult result) { | ||||
|     return ListView( | ||||
|       padding: EdgeInsets.only( | ||||
|         left: 16, | ||||
|         right: 16, | ||||
|         bottom: MediaQuery.of(context).padding.bottom + 16, | ||||
|         top: 16, | ||||
|       ), | ||||
|       children: [ | ||||
|         ...result.steps.map( | ||||
|           (step) => Card( | ||||
|             margin: const EdgeInsets.symmetric(vertical: 8), | ||||
|             child: ClipRRect( | ||||
|               borderRadius: const BorderRadius.all(Radius.circular(8)), | ||||
|               child: Stack( | ||||
|                 children: [ | ||||
|                   Padding( | ||||
|                     padding: const EdgeInsets.only( | ||||
|                       left: 12, | ||||
|                       right: 12, | ||||
|                       bottom: 4, | ||||
|                       top: 16, | ||||
|                     ), | ||||
|                     child: Column( | ||||
|                       crossAxisAlignment: CrossAxisAlignment.center, | ||||
|                       children: [ | ||||
|                         Text( | ||||
|                           step.title, | ||||
|                           style: Theme.of(context).textTheme.titleMedium, | ||||
|                         ), | ||||
|                         const SizedBox(height: 4), | ||||
|                         SelectableText(step.explanation), | ||||
|                         Center( | ||||
|                           child: LaTexT( | ||||
|                             laTeXCode: Text( | ||||
|                               step.formula, | ||||
|                               style: Theme.of(context).textTheme.titleMedium, | ||||
|                             ), | ||||
|                           ), | ||||
|                         ), | ||||
|                       ], | ||||
|                     ), | ||||
|                   ), | ||||
|                   Positioned( | ||||
|                     left: -8, | ||||
|                     top: -8, | ||||
|                     child: Transform.rotate( | ||||
|                       angle: pi / -5, | ||||
|                       child: Opacity( | ||||
|                         opacity: 0.8, | ||||
|                         child: Badge( | ||||
|                           backgroundColor: Theme.of( | ||||
|                             context, | ||||
|                           ).colorScheme.primary, | ||||
|                           label: Text( | ||||
|                             step.stepNumber.toString(), | ||||
|                             style: TextStyle(fontSize: 32), | ||||
|                           ), | ||||
|                         ), | ||||
|                       ), | ||||
|                     ), | ||||
|                   ), | ||||
|                 ], | ||||
|               ), | ||||
|             ), | ||||
|           ), | ||||
|         ), | ||||
|         const SizedBox(height: 10), | ||||
|         Card( | ||||
|           color: Theme.of(context).colorScheme.primaryContainer, | ||||
|           child: Padding( | ||||
|             padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), | ||||
|             child: Column( | ||||
|               children: [ | ||||
|                 const SizedBox(height: 16), | ||||
|                 Text( | ||||
|                   "最终答案", | ||||
|                   style: Theme.of(context).textTheme.titleLarge?.copyWith( | ||||
|                     color: Theme.of(context).colorScheme.onPrimaryContainer, | ||||
|                   ), | ||||
|                 ), | ||||
|                 LaTexT( | ||||
|                   laTeXCode: Text( | ||||
|                     result.finalAnswer, | ||||
|                     style: Theme.of(context).textTheme.titleMedium?.copyWith( | ||||
|                       color: Theme.of(context).colorScheme.onPrimaryContainer, | ||||
|                     ), | ||||
|                   ), | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|           ), | ||||
|         ), | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										43
									
								
								lib/screens/home_screen.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,43 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'calculator_home_page.dart'; | ||||
| import 'about_page.dart'; | ||||
|  | ||||
| class HomeScreen extends StatefulWidget { | ||||
|   const HomeScreen({super.key}); | ||||
|  | ||||
|   @override | ||||
|   State<HomeScreen> createState() => _HomeScreenState(); | ||||
| } | ||||
|  | ||||
| class _HomeScreenState extends State<HomeScreen> { | ||||
|   int _selectedIndex = 0; | ||||
|  | ||||
|   static const List<Widget> _widgetOptions = <Widget>[ | ||||
|     CalculatorHomePage(), | ||||
|     AboutPage(), | ||||
|   ]; | ||||
|  | ||||
|   void _onItemTapped(int index) { | ||||
|     setState(() { | ||||
|       _selectedIndex = index; | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       body: _widgetOptions.elementAt(_selectedIndex), | ||||
|       bottomNavigationBar: BottomNavigationBar( | ||||
|         items: const <BottomNavigationBarItem>[ | ||||
|           BottomNavigationBarItem( | ||||
|             icon: Icon(Icons.calculate), | ||||
|             label: 'Calculator', | ||||
|           ), | ||||
|           BottomNavigationBarItem(icon: Icon(Icons.info), label: 'About'), | ||||
|         ], | ||||
|         currentIndex: _selectedIndex, | ||||
|         onTap: _onItemTapped, | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @@ -1,68 +1,68 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     "info": { | ||||
|         "version": 1, | ||||
|         "author": "xcode" | ||||
|     }, | ||||
|     "images": [ | ||||
|         { | ||||
|       "size" : "16x16", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_16.png", | ||||
|       "scale" : "1x" | ||||
|             "size": "16x16", | ||||
|             "idiom": "mac", | ||||
|             "filename": "app_icon_16.png", | ||||
|             "scale": "1x" | ||||
|         }, | ||||
|         { | ||||
|       "size" : "16x16", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_32.png", | ||||
|       "scale" : "2x" | ||||
|             "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_32.png", | ||||
|             "scale": "1x" | ||||
|         }, | ||||
|         { | ||||
|       "size" : "32x32", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_64.png", | ||||
|       "scale" : "2x" | ||||
|             "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_128.png", | ||||
|             "scale": "1x" | ||||
|         }, | ||||
|         { | ||||
|       "size" : "128x128", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_256.png", | ||||
|       "scale" : "2x" | ||||
|             "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_256.png", | ||||
|             "scale": "1x" | ||||
|         }, | ||||
|         { | ||||
|       "size" : "256x256", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_512.png", | ||||
|       "scale" : "2x" | ||||
|             "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_512.png", | ||||
|             "scale": "1x" | ||||
|         }, | ||||
|         { | ||||
|       "size" : "512x512", | ||||
|       "idiom" : "mac", | ||||
|       "filename" : "app_icon_1024.png", | ||||
|       "scale" : "2x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|             "size": "512x512", | ||||
|             "idiom": "mac", | ||||
|             "filename": "app_icon_1024.png", | ||||
|             "scale": "2x" | ||||
|         } | ||||
|     ] | ||||
| } | ||||
| Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 40 KiB | 
| Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 520 B After Width: | Height: | Size: 264 B | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 5.7 KiB | 
| Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 628 B | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										145
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						| @@ -1,6 +1,22 @@ | ||||
| # Generated by pub | ||||
| # See https://dart.dev/tools/pub/glossary#lockfile | ||||
| packages: | ||||
|   ansicolor: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: ansicolor | ||||
|       sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.3" | ||||
|   archive: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: archive | ||||
|       sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.0.7" | ||||
|   args: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -33,6 +49,22 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.4.0" | ||||
|   checked_yaml: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: checked_yaml | ||||
|       sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.4" | ||||
|   cli_util: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: cli_util | ||||
|       sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.4.2" | ||||
|   clock: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -57,6 +89,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.6" | ||||
|   csslib: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: csslib | ||||
|       sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.2" | ||||
|   cupertino_icons: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
| @@ -86,14 +126,22 @@ packages: | ||||
|     description: flutter | ||||
|     source: sdk | ||||
|     version: "0.0.0" | ||||
|   flutter_launcher_icons: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: flutter_launcher_icons | ||||
|       sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.14.4" | ||||
|   flutter_lints: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: flutter_lints | ||||
|       sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" | ||||
|       sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "5.0.0" | ||||
|     version: "6.0.0" | ||||
|   flutter_math_fork: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -102,6 +150,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.7.4" | ||||
|   flutter_native_splash: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: flutter_native_splash | ||||
|       sha256: "8321a6d11a8d13977fa780c89de8d257cce3d841eecfb7a4cadffcc4f12d82dc" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.4.6" | ||||
|   flutter_svg: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -115,6 +171,19 @@ packages: | ||||
|     description: flutter | ||||
|     source: sdk | ||||
|     version: "0.0.0" | ||||
|   flutter_web_plugins: | ||||
|     dependency: transitive | ||||
|     description: flutter | ||||
|     source: sdk | ||||
|     version: "0.0.0" | ||||
|   go_router: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: go_router | ||||
|       sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "14.8.1" | ||||
|   google_fonts: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
| @@ -123,6 +192,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.3.1" | ||||
|   html: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: html | ||||
|       sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.15.6" | ||||
|   http: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -139,6 +216,22 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.1.2" | ||||
|   image: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: image | ||||
|       sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.5.4" | ||||
|   json_annotation: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: json_annotation | ||||
|       sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.9.0" | ||||
|   latext: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
| @@ -175,10 +268,18 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: lints | ||||
|       sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 | ||||
|       sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "5.1.1" | ||||
|     version: "6.0.0" | ||||
|   logging: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: logging | ||||
|       sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.0" | ||||
|   matcher: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -199,10 +300,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: math_expressions | ||||
|       sha256: b5f6ffb67a558d564ff6fd433661640d13c7582ac80efbe6fc89c54e0a6ed580 | ||||
|       sha256: "2e1ceb974c2b1893c809a68c7005f1b63f7324db0add800a0e792b1ac8ff9f03" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.0" | ||||
|     version: "3.1.0" | ||||
|   meta: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -287,10 +388,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: petitparser | ||||
|       sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" | ||||
|       sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.1.0" | ||||
|     version: "7.0.1" | ||||
|   platform: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -307,6 +408,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.8" | ||||
|   posix: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: posix | ||||
|       sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.0.3" | ||||
|   provider: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -384,6 +493,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.4.0" | ||||
|   universal_io: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: universal_io | ||||
|       sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.2" | ||||
|   vector_graphics: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -444,10 +561,18 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: xml | ||||
|       sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 | ||||
|       sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.5.0" | ||||
|     version: "6.6.1" | ||||
|   yaml: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: yaml | ||||
|       sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.3" | ||||
| sdks: | ||||
|   dart: ">=3.9.2 <4.0.0" | ||||
|   flutter: ">=3.29.0" | ||||
|   | ||||
							
								
								
									
										34
									
								
								pubspec.yaml
									
									
									
									
									
								
							
							
						
						| @@ -1,8 +1,8 @@ | ||||
| name: simple_math_calc | ||||
| description: "A new Flutter project." | ||||
| description: "A simple math calculator." | ||||
| # The following line prevents the package from being accidentally published to | ||||
| # pub.dev using `flutter pub publish`. This is preferred for private packages. | ||||
| publish_to: 'none' # Remove this line if you wish to publish to pub.dev | ||||
| publish_to: "none" # Remove this line if you wish to publish to pub.dev | ||||
|  | ||||
| # The following defines the version and build number for your application. | ||||
| # A version number is three numbers separated by dots, like 1.2.43 | ||||
| @@ -34,9 +34,10 @@ dependencies: | ||||
|   # The following adds the Cupertino Icons font to your application. | ||||
|   # Use with the CupertinoIcons class for iOS style icons. | ||||
|   cupertino_icons: ^1.0.8 | ||||
|   math_expressions: ^3.0.0 | ||||
|   math_expressions: ^3.1.0 | ||||
|   latext: ^0.5.1 | ||||
|   google_fonts: ^6.3.1 | ||||
|   go_router: ^14.2.0 | ||||
|  | ||||
| dev_dependencies: | ||||
|   flutter_test: | ||||
| @@ -47,14 +48,15 @@ dev_dependencies: | ||||
|   # activated in the `analysis_options.yaml` file located at the root of your | ||||
|   # package. See that file for information about deactivating specific lint | ||||
|   # rules and activating additional ones. | ||||
|   flutter_lints: ^5.0.0 | ||||
|   flutter_lints: ^6.0.0 | ||||
|   flutter_native_splash: ^2.4.6 | ||||
|   flutter_launcher_icons: ^0.14.4 | ||||
|  | ||||
| # For information on the generic Dart part of this file, see the | ||||
| # following page: https://dart.dev/tools/pub/pubspec | ||||
|  | ||||
| # The following section is specific to Flutter packages. | ||||
| flutter: | ||||
|  | ||||
|   # The following line ensures that the Material Icons font is | ||||
|   # included with your application, so that you can use the icons in | ||||
|   # the material Icons class. | ||||
| @@ -90,3 +92,25 @@ flutter: | ||||
|   # | ||||
|   # For details regarding fonts from package dependencies, | ||||
|   # see https://flutter.dev/to/font-from-package | ||||
|  | ||||
| flutter_native_splash: | ||||
|   color: "#8470b5" | ||||
|   image: assets/icon.jpg | ||||
|  | ||||
| flutter_launcher_icons: | ||||
|   android: "launcher_icon" | ||||
|   ios: true | ||||
|   image_path: "assets/icon.jpg" | ||||
|   min_sdk_android: 21 # android min sdk min:16, default 21 | ||||
|   web: | ||||
|     generate: true | ||||
|     image_path: "assets/icon.jpg" | ||||
|     background_color: "#8470b5" | ||||
|     theme_color: "#8470b5" | ||||
|   windows: | ||||
|     generate: true | ||||
|     image_path: "assets/icon.jpg" | ||||
|     icon_size: 48 # min:48, max:256, default: 48 | ||||
|   macos: | ||||
|     generate: true | ||||
|     image_path: "assets/icon.jpg" | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								web/favicon.png
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 917 B After Width: | Height: | Size: 264 B | 
| Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.3 KiB | 
| Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.3 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 14 KiB | 
| @@ -1,6 +1,4 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
| <!DOCTYPE html><html><head> | ||||
|   <!-- | ||||
|     If you are serving your web app in a path other than the root, change the | ||||
|     href value below to reflect the base path you are serving from. | ||||
| @@ -27,12 +25,84 @@ | ||||
|   <link rel="apple-touch-icon" href="icons/Icon-192.png"> | ||||
|  | ||||
|   <!-- Favicon --> | ||||
|   <link rel="icon" type="image/png" href="favicon.png"/> | ||||
|   <link rel="icon" type="image/png" href="favicon.png"> | ||||
|  | ||||
|   <title>simple_math_calc</title> | ||||
|   <link rel="manifest" href="manifest.json"> | ||||
|   <style id="splash-screen-style"> | ||||
|     html { | ||||
|       height: 100% | ||||
|     } | ||||
|  | ||||
|     body { | ||||
|       margin: 0; | ||||
|       min-height: 100%; | ||||
|       background-color: #8470b5; | ||||
|           background-size: 100% 100%; | ||||
|     } | ||||
|  | ||||
|     .center { | ||||
|       margin: 0; | ||||
|       position: absolute; | ||||
|       top: 50%; | ||||
|       left: 50%; | ||||
|       -ms-transform: translate(-50%, -50%); | ||||
|       transform: translate(-50%, -50%); | ||||
|     } | ||||
|  | ||||
|     .contain { | ||||
|       display:block; | ||||
|       width:100%; height:100%; | ||||
|       object-fit: contain; | ||||
|     } | ||||
|  | ||||
|     .stretch { | ||||
|       display:block; | ||||
|       width:100%; height:100%; | ||||
|     } | ||||
|  | ||||
|     .cover { | ||||
|       display:block; | ||||
|       width:100%; height:100%; | ||||
|       object-fit: cover; | ||||
|     } | ||||
|  | ||||
|     .bottom { | ||||
|       position: absolute; | ||||
|       bottom: 0; | ||||
|       left: 50%; | ||||
|       -ms-transform: translate(-50%, 0); | ||||
|       transform: translate(-50%, 0); | ||||
|     } | ||||
|  | ||||
|     .bottomLeft { | ||||
|       position: absolute; | ||||
|       bottom: 0; | ||||
|       left: 0; | ||||
|     } | ||||
|  | ||||
|     .bottomRight { | ||||
|       position: absolute; | ||||
|       bottom: 0; | ||||
|       right: 0; | ||||
|     } | ||||
|   </style> | ||||
|   <script id="splash-screen-script"> | ||||
|     function removeSplashFromWeb() { | ||||
|       document.getElementById("splash")?.remove(); | ||||
|       document.getElementById("splash-branding")?.remove(); | ||||
|       document.body.style.background = "transparent"; | ||||
|     } | ||||
|   </script> | ||||
|   <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"> | ||||
| </head> | ||||
| <body> | ||||
|   <script src="flutter_bootstrap.js" async></script> | ||||
| </body> | ||||
| </html> | ||||
|   <picture id="splash"> | ||||
|       <source srcset="splash/img/light-1x.png 1x, splash/img/light-2x.png 2x, splash/img/light-3x.png 3x, splash/img/light-4x.png 4x" media="(prefers-color-scheme: light)"> | ||||
|       <source srcset="splash/img/dark-1x.png 1x, splash/img/dark-2x.png 2x, splash/img/dark-3x.png 3x, splash/img/dark-4x.png 4x" media="(prefers-color-scheme: dark)"> | ||||
|       <img class="center" aria-hidden="true" src="splash/img/light-1x.png" alt=""> | ||||
|   </picture> | ||||
|   <script src="flutter_bootstrap.js" async=""></script> | ||||
|  | ||||
|  | ||||
| </body></html> | ||||
| @@ -3,8 +3,8 @@ | ||||
|     "short_name": "simple_math_calc", | ||||
|     "start_url": ".", | ||||
|     "display": "standalone", | ||||
|     "background_color": "#0175C2", | ||||
|     "theme_color": "#0175C2", | ||||
|     "background_color": "#8470b5", | ||||
|     "theme_color": "#8470b5", | ||||
|     "description": "A new Flutter project.", | ||||
|     "orientation": "portrait-primary", | ||||
|     "prefer_related_applications": false, | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/dark-1x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/dark-2x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/dark-3x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/dark-4x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 40 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/light-1x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/light-2x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/light-3x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								web/splash/img/light-4x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 40 KiB | 
| Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 1017 B |