diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies
index 8b70634..6fb3ae6 100644
--- a/.flutter-plugins-dependencies
+++ b/.flutter-plugins-dependencies
@@ -1 +1 @@
-{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"audioplayers","dependencies":["path_provider"]},{"name":"path_provider","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]}]}
\ No newline at end of file
+{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"audioplayers","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\audioplayers-0.15.1\\\\","dependencies":["path_provider"]},{"name":"path_provider","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.11\\\\","dependencies":[]},{"name":"shared_preferences","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-0.5.7+3\\\\","dependencies":[]},{"name":"url_launcher","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-5.4.11\\\\","dependencies":[]}],"android":[{"name":"audioplayers","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\audioplayers-0.15.1\\\\","dependencies":["path_provider"]},{"name":"path_provider","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.11\\\\","dependencies":[]},{"name":"shared_preferences","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-0.5.7+3\\\\","dependencies":[]},{"name":"url_launcher","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-5.4.11\\\\","dependencies":[]}],"macos":[{"name":"audioplayers","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\audioplayers-0.15.1\\\\","dependencies":[]},{"name":"path_provider_macos","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+3\\\\","dependencies":[]},{"name":"shared_preferences_macos","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_macos-0.0.1+10\\\\","dependencies":[]},{"name":"url_launcher_macos","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_macos-0.0.1+7\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+1\\\\","dependencies":[]}],"windows":[],"web":[{"name":"audioplayers","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\audioplayers-0.15.1\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_web-0.1.2+7\\\\","dependencies":[]},{"name":"url_launcher_web","path":"C:\\\\Users\\\\nimak\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_web-0.1.1+6\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"audioplayers","dependencies":["path_provider"]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_web","url_launcher_macos"]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]}],"date_created":"2020-06-20 19:19:52.385954","version":"1.17.4"}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index ac4a906..aa35107 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,72 +1,72 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-.dart_tool/
-.flutter-plugins
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Android related
-**/android/**/gradle-wrapper.jar
-**/android/.gradle
-**/android/captures/
-**/android/gradlew
-**/android/gradlew.bat
-**/android/local.properties
-**/android/**/GeneratedPluginRegistrant.java
-
-# iOS/XCode related
-**/ios/**/*.mode1v3
-**/ios/**/*.mode2v3
-**/ios/**/*.moved-aside
-**/ios/**/*.pbxuser
-**/ios/**/*.perspectivev3
-**/ios/**/*sync/
-**/ios/**/.sconsign.dblite
-**/ios/**/.tags*
-**/ios/**/.vagrant/
-**/ios/**/DerivedData/
-**/ios/**/Icon?
-**/ios/**/Pods/
-**/ios/**/.symlinks/
-**/ios/**/profile
-**/ios/**/xcuserdata
-**/ios/.generated/
-**/ios/Flutter/App.framework
-**/ios/Flutter/Flutter.framework
-**/ios/Flutter/Generated.xcconfig
-**/ios/Flutter/app.flx
-**/ios/Flutter/app.zip
-**/ios/Flutter/flutter_assets/
-**/ios/ServiceDefinitions.json
-**/ios/Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!**/ios/**/default.mode1v3
-!**/ios/**/default.mode2v3
-!**/ios/**/default.pbxuser
-!**/ios/**/default.perspectivev3
-!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/.metadata b/.metadata
index 2abb5c9..5d6df35 100644
--- a/.metadata
+++ b/.metadata
@@ -1,10 +1,10 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
- revision: 20e59316b8b8474554b38493b8ca888794b0234a
- channel: beta
-
-project_type: app
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 20e59316b8b8474554b38493b8ca888794b0234a
+ channel: beta
+
+project_type: app
diff --git a/README.md b/README.md
index dcf62c6..aa93243 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,16 @@
-# four
-
-Four fours game
-
-## Getting Started
-
-This project is a starting point for a Flutter application.
-
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
-
-For help getting started with Flutter, view our
-[online documentation](https://flutter.dev/docs), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
+# four
+
+Four fours game
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
+
+For help getting started with Flutter, view our
+[online documentation](https://flutter.dev/docs), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 0c573a9..1d9140c 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,67 +1,67 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
- flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
- flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
- compileSdkVersion 28
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- }
-
- lintOptions {
- disable 'InvalidPackage'
- }
-
- defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "snibo.four"
- minSdkVersion 16
- targetSdkVersion 28
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
- }
- }
-}
-
-flutter {
- source '../..'
-}
-
-dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
-}
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion 28
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ lintOptions {
+ disable 'InvalidPackage'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "snibo.four"
+ minSdkVersion 16
+ targetSdkVersion 28
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'com.android.support.test:runner:1.0.2'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 66bc9f1..2c4316f 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 9fdd4f0..060e365 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,35 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/snibo/four/MainActivity.kt b/android/app/src/main/kotlin/snibo/four/MainActivity.kt
index 3add216..6bbe4ed 100644
--- a/android/app/src/main/kotlin/snibo/four/MainActivity.kt
+++ b/android/app/src/main/kotlin/snibo/four/MainActivity.kt
@@ -1,13 +1,13 @@
-package snibo.four
-
-import android.os.Bundle
-
-import io.flutter.app.FlutterActivity
-import io.flutter.plugins.GeneratedPluginRegistrant
-
-class MainActivity: FlutterActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- GeneratedPluginRegistrant.registerWith(this)
- }
-}
+package snibo.four
+
+import android.os.Bundle
+
+import io.flutter.app.FlutterActivity
+import io.flutter.plugins.GeneratedPluginRegistrant
+
+class MainActivity: FlutterActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ GeneratedPluginRegistrant.registerWith(this)
+ }
+}
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
index 304732f..8403758 100644
--- a/android/app/src/main/res/drawable/launch_background.xml
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -1,12 +1,12 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index 00fa441..4c57322 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -1,8 +1,8 @@
-
-
-
-
+
+
+
+
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
index 66bc9f1..2c4316f 100644
--- a/android/app/src/profile/AndroidManifest.xml
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
diff --git a/android/build.gradle b/android/build.gradle
index b7faad8..cf83cb9 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,31 +1,31 @@
-buildscript {
- ext.kotlin_version = '1.2.71'
- repositories {
- google()
- jcenter()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:3.2.1'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- jcenter()
- }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
- project.evaluationDependsOn(':app')
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
+buildscript {
+ ext.kotlin_version = '1.2.71'
+ repositories {
+ google()
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.2.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/android/gradle.properties b/android/gradle.properties
index 7be3d8b..5b1f143 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,2 +1,2 @@
-org.gradle.jvmargs=-Xmx1536M
-android.enableR8=true
+org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 2819f02..d3b2d27 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
index 5a2f14f..4f14f8e 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,15 +1,15 @@
-include ':app'
-
-def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
-
-def plugins = new Properties()
-def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
-if (pluginsFile.exists()) {
- pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
-}
-
-plugins.each { name, path ->
- def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
- include ":$name"
- project(":$name").projectDir = pluginDirectory
-}
+include ':app'
+
+def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
+
+def plugins = new Properties()
+def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
+if (pluginsFile.exists()) {
+ pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
+}
+
+plugins.each { name, path ->
+ def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
+ include ":$name"
+ project(":$name").projectDir = pluginDirectory
+}
diff --git a/assets/images/logo.png b/assets/images/logo.png
new file mode 100644
index 0000000..1375a08
Binary files /dev/null and b/assets/images/logo.png differ
diff --git a/assets/images/logo1.gif b/assets/images/logo1.gif
new file mode 100644
index 0000000..f535bfe
Binary files /dev/null and b/assets/images/logo1.gif differ
diff --git a/assets/images/logo1.png b/assets/images/logo1.png
new file mode 100644
index 0000000..1375a08
Binary files /dev/null and b/assets/images/logo1.png differ
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 6b4c0f7..58e65f9 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -1,26 +1,26 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 8.0
-
-
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 8.0
+
+
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
index 592ceee..0b2d479 100644
--- a/ios/Flutter/Debug.xcconfig
+++ b/ios/Flutter/Debug.xcconfig
@@ -1 +1 @@
-#include "Generated.xcconfig"
+#include "Generated.xcconfig"
diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
index 592ceee..0b2d479 100644
--- a/ios/Flutter/Release.xcconfig
+++ b/ios/Flutter/Release.xcconfig
@@ -1 +1 @@
-#include "Generated.xcconfig"
+#include "Generated.xcconfig"
diff --git a/ios/Flutter/flutter_export_environment.sh b/ios/Flutter/flutter_export_environment.sh
new file mode 100644
index 0000000..e751f7e
--- /dev/null
+++ b/ios/Flutter/flutter_export_environment.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This is a generated file; do not edit or check into version control.
+export "FLUTTER_ROOT=C:\Users\nimak\flutter"
+export "FLUTTER_APPLICATION_PATH=C:\Users\nimak\Documents\Programming\four"
+export "FLUTTER_TARGET=lib\main.dart"
+export "FLUTTER_BUILD_DIR=build"
+export "SYMROOT=${SOURCE_ROOT}/../build\ios"
+export "OTHER_LDFLAGS=$(inherited) -framework Flutter"
+export "FLUTTER_FRAMEWORK_DIR=C:\Users\nimak\flutter\bin\cache\artifacts\engine\ios"
+export "FLUTTER_BUILD_NAME=1.0.0"
+export "FLUTTER_BUILD_NUMBER=1"
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 8957a7e..6d0df96 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -1,521 +1,521 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
- 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
- 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
- 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
- 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 */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
- 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 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 = ""; };
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; 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 = ""; };
- 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 = ""; };
- 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
- 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 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 = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 97C146EB1CF9000F007C117D /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
- 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 9740EEB11CF90186004384FC /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 3B80C3931E831B6300D905FE /* App.framework */,
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
- 9740EEBA1CF902C7004384FC /* Flutter.framework */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 9740EEB31CF90195004384FC /* Generated.xcconfig */,
- );
- name = Flutter;
- sourceTree = "";
- };
- 97C146E51CF9000F007C117D = {
- isa = PBXGroup;
- children = (
- 9740EEB11CF90186004384FC /* Flutter */,
- 97C146F01CF9000F007C117D /* Runner */,
- 97C146EF1CF9000F007C117D /* Products */,
- );
- sourceTree = "";
- };
- 97C146EF1CF9000F007C117D /* Products */ = {
- isa = PBXGroup;
- children = (
- 97C146EE1CF9000F007C117D /* Runner.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 97C146F01CF9000F007C117D /* Runner */ = {
- isa = PBXGroup;
- children = (
- 97C146FA1CF9000F007C117D /* Main.storyboard */,
- 97C146FD1CF9000F007C117D /* Assets.xcassets */,
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
- 97C147021CF9000F007C117D /* Info.plist */,
- 97C146F11CF9000F007C117D /* Supporting Files */,
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
- );
- path = Runner;
- sourceTree = "";
- };
- 97C146F11CF9000F007C117D /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Supporting Files";
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 97C146ED1CF9000F007C117D /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- 9740EEB61CF901F6004384FC /* Run Script */,
- 97C146EA1CF9000F007C117D /* Sources */,
- 97C146EB1CF9000F007C117D /* Frameworks */,
- 97C146EC1CF9000F007C117D /* Resources */,
- 9705A1C41CF9048500538489 /* Embed Frameworks */,
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Runner;
- productName = Runner;
- productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 97C146E61CF9000F007C117D /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 1020;
- ORGANIZATIONNAME = "The Chromium Authors";
- TargetAttributes = {
- 97C146ED1CF9000F007C117D = {
- CreatedOnToolsVersion = 7.3.1;
- LastSwiftMigration = 0910;
- };
- };
- };
- buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 97C146E51CF9000F007C117D;
- productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 97C146ED1CF9000F007C117D /* Runner */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 97C146EC1CF9000F007C117D /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
- 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Thin Binary";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
- };
- 9740EEB61CF901F6004384FC /* Run Script */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 97C146EA1CF9000F007C117D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C146FB1CF9000F007C117D /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C147001CF9000F007C117D /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 249021D3217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Profile;
- };
- 249021D4217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = S8QB4VV633;
- ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 4.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Profile;
- };
- 97C147031CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 97C147041CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 97C147061CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_SWIFT3_OBJC_INFERENCE = On;
- SWIFT_VERSION = 4.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 97C147071CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_SWIFT3_OBJC_INFERENCE = On;
- SWIFT_VERSION = 4.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147031CF9000F007C117D /* Debug */,
- 97C147041CF9000F007C117D /* Release */,
- 249021D3217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147061CF9000F007C117D /* Debug */,
- 97C147071CF9000F007C117D /* Release */,
- 249021D4217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
-
- };
- rootObject = 97C146E61CF9000F007C117D /* Project object */;
-}
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
+ 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
+ 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
+ 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 */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
+ 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 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 = ""; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; 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 = ""; };
+ 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 = ""; };
+ 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 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 = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
+ 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B80C3931E831B6300D905FE /* App.framework */,
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEBA1CF902C7004384FC /* Flutter.framework */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 97C146F11CF9000F007C117D /* Supporting Files */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+ 97C146F11CF9000F007C117D /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = "Supporting Files";
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1020;
+ ORGANIZATIONNAME = "The Chromium Authors";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 0910;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = S8QB4VV633;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_SWIFT3_OBJC_INFERENCE = On;
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = snibo.four;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_SWIFT3_OBJC_INFERENCE = On;
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a1..59c6d39 100644
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -1,7 +1,7 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index a28140c..be0b92e 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,91 +1,91 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
index 1d526a1..59c6d39 100644
--- a/ios/Runner.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -1,7 +1,7 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 71cc41e..52252fc 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,13 +1,13 @@
-import UIKit
-import Flutter
-
-@UIApplicationMain
-@objc class AppDelegate: FlutterAppDelegate {
- override func application(
- _ application: UIApplication,
- didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
- ) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
-}
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
index d36b1fa..1950fd8 100644
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,122 +1,122 @@
-{
- "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" : "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"
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
index 0bedcf2..d08a4de 100644
--- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -1,23 +1,23 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "LaunchImage.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
index 89c2725..65a94b5 100644
--- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
+++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -1,5 +1,5 @@
-# Launch Screen Assets
-
-You can customize the launch screen with your own desired assets by replacing the image files in this directory.
-
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
index f2e259c..497371e 100644
--- a/ios/Runner/Base.lproj/LaunchScreen.storyboard
+++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -1,37 +1,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
index f3c2851..bbb83ca 100644
--- a/ios/Runner/Base.lproj/Main.storyboard
+++ b/ios/Runner/Base.lproj/Main.storyboard
@@ -1,26 +1,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 9900004..7bb9d28 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -1,45 +1,45 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- four
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleSignature
- ????
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
-
-
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ four
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/lib/About.dart b/lib/About.dart
new file mode 100644
index 0000000..e11b002
--- /dev/null
+++ b/lib/About.dart
@@ -0,0 +1,33 @@
+import 'package:flutter/material.dart';
+import 'utils.dart';
+import 'package:flutter/services.dart';
+
+class About extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ SystemChrome.setEnabledSystemUIOverlays([]);
+ return Scaffold(
+ backgroundColor: Theme.of(context).backgroundColor,
+ body: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text("Created by Sidney Nimako"),
+ FlatButton(
+ child: Text(
+ "snibo.me",
+ style: TextStyle(decoration: TextDecoration.underline, color: Theme.of(context).primaryColor),
+ ),
+ onPressed: () => launchSite("http://snibo.me"),
+ ),
+ FlatButton(
+ child: Text("Support me",
+ style: TextStyle(decoration: TextDecoration.underline)),
+ onPressed: () => launchSite("https://www.paypal.me/snibo/4444"),
+ )
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/Game.dart b/lib/Game.dart
new file mode 100644
index 0000000..bcfba80
--- /dev/null
+++ b/lib/Game.dart
@@ -0,0 +1,325 @@
+import 'package:flutter/material.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+import 'package:flame/flame.dart';
+import 'package:flutter/services.dart';
+
+import 'MathEngine.dart';
+import 'utils.dart';
+import 'Themes.dart';
+
+class GamePage extends StatefulWidget {
+ GamePage({Key key, this.gameType}) : super(key: key);
+
+ final int gameType;
+
+ @override
+ _GamePageState createState() => _GamePageState();
+}
+
+class _GamePageState extends State {
+ int _counter = 4;
+ String _value = "";
+ int _goal = 0;
+ int _score;
+ int _computation;
+
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ void _plus() {
+ setState(() {
+ _value += "+";
+ });
+ }
+
+ void correctSound() {
+ Flame.audio.play("correct.mp3");
+ }
+
+ void squared() {
+ setState(() {
+ _value += '\u00B2';
+ });
+ }
+
+ void _factorial() {
+ setState(() {
+ _value += '!';
+ });
+ }
+
+ void _exp() {
+ setState(() {
+ _value += "^";
+ });
+ }
+
+ void _squared() {
+ setState(() {
+ _value += "²";
+ });
+ }
+
+ void _minus() {
+ setState(() {
+ _value += "-";
+ });
+ }
+
+ void _div() {
+ setState(() {
+ _value += "\u00F7";
+ });
+ }
+
+ void _mult() {
+ setState(() {
+ _value += "x";
+ });
+ }
+
+ void _sqrt() {
+ setState(() {
+ _value += '\u221a';
+ });
+ }
+
+ void _openParen() {
+ setState(() {
+ _value += "(";
+ });
+ }
+
+ void _closeParen() {
+ setState(() {
+ _value += ")";
+ });
+ }
+
+ void _decimal() {
+ setState(() {
+ _value += ".";
+ });
+ }
+
+ void _clear() {
+ setState(() {
+ _value = "";
+ _counter = 4;
+ });
+ }
+
+ void _equals() {
+ setState(() {
+ _computation = mathEngine(_value).round();
+ if (_computation == _goal && _counter == 0) {
+ _goal++;
+ correctSound();
+ _updateScore(_goal);
+ _clear();
+ } else {
+ if (_counter != 0) {
+ _value += "=$_computation";
+ } else {
+ _value += "=$_computation";
+ }
+ }
+ });
+ }
+
+ void _four() {
+ setState(() {
+ if (_counter == 0) {
+ } else {
+ _value += "4";
+ _counter--;
+ }
+ });
+ }
+
+ void _backspace() {
+ setState(() {
+ int len = _value.length;
+ if (int.tryParse(_value.substring(len - 1)) != null) {
+ _counter++;
+ }
+ _value = _value.substring(0, len - 1);
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ Flame.audio.load('correct.mp3');
+ SystemChrome.setEnabledSystemUIOverlays([]);
+ _loadPage();
+ return FutureBuilder(
+ future: Future.delayed(Duration(seconds: minTime), () => true),
+ builder: (BuildContext context, AsyncSnapshot snapshot) {
+ Widget _body;
+ if (snapshot.hasData) {
+ _body = gamePage();
+ } else {
+ _body = new Container(
+ color: Theme.of(context).backgroundColor,
+ child: Center(
+ child: Image(
+ image: AssetImage(logosLoading[theme]), height: 200.0),
+ ));
+ }
+ return new Scaffold(
+ backgroundColor: Theme.of(context).backgroundColor, body: _body);
+ },
+ );
+// startTimer(4);
+ //return new Scaffold(
+ //backgroundColor: Color(0xffCED4CC),
+ //body: gamePage(),
+ //);
+ }
+
+ Widget genRow(
+ String t1, Function f1, String t2, Function f2, String t3, Function f3) {
+ if (t2 == "=") {
+ return Row(
+ children: [
+ newButton(t1, f1, Theme.of(context).accentColor,
+ Theme.of(context).textTheme.bodyText1.color),
+ newButton(t2, f2, Theme.of(context).primaryColor,
+ Theme.of(context).textTheme.headline3.color),
+ newButton(t3, f3, Theme.of(context).accentColor,
+ Theme.of(context).textTheme.bodyText1.color),
+ ],
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ );
+ }
+ return Row(
+ children: [
+ newButton(t1, f1, Theme.of(context).accentColor,
+ Theme.of(context).textTheme.bodyText1.color),
+ newButton(t2, f2, Theme.of(context).accentColor,
+ Theme.of(context).textTheme.bodyText1.color),
+ newButton(t3, f3, Theme.of(context).accentColor,
+ Theme.of(context).textTheme.bodyText1.color),
+ ],
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ );
+ }
+
+ Widget newButton(
+ String text, Function f, Color backgroundColor, Color textColor) {
+ return RaisedButton(
+ color: backgroundColor,
+ shape:
+ RoundedRectangleBorder(borderRadius: new BorderRadius.circular(18.0)),
+ onPressed: f,
+ child: Text(
+ "$text",
+ style: TextStyle(
+ fontSize: 24, color: Theme.of(context).textTheme.bodyText1.color),
+ ),
+ padding: EdgeInsets.all(15),
+ animationDuration: Duration(microseconds: 0),
+ );
+ }
+
+ Widget gamePage() {
+ return Padding(
+ padding:
+ EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.06),
+ child: Center(
+ child: Column(
+ children: [
+ Row(
+ children: [
+ Column(
+ children: [
+ Text("Goal:", style: Theme.of(context).textTheme.bodyText1),
+ Text('$_goal',
+ style: Theme.of(context).textTheme.headline3),
+ ],
+ ),
+ Column(
+ children: [
+ Text("Highscore:", style: Theme.of(context).textTheme.bodyText1),
+ Text(
+ '$_score',
+ style: Theme.of(context).textTheme.headline3,
+ ),
+ ],
+ ),
+ ],
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ ),
+ Padding(
+ padding: EdgeInsets.fromLTRB(0,2.0,0,15.0),
+// color: Colors.transparent,
+ child: Container(
+ child: SizedBox(
+ width: MediaQuery.of(context).size.width * 0.9,
+ height: MediaQuery.of(context).size.height * 0.1,
+ child: Center(
+ child: Text(
+ '$_value',
+ style: Theme.of(context).textTheme.headline4,
+ textAlign: TextAlign.center,
+ ),
+ )),
+ decoration: BoxDecoration(
+ color: Theme.of(context).primaryColorDark,
+ borderRadius: BorderRadius.circular(
+ MediaQuery.of(context).size.width * 0.04)),
+ )
+ ),
+ Text(
+ "Fours Remaining: $_counter",
+ textAlign: TextAlign.center,
+ style: TextStyle(color: Theme.of(context).textTheme.bodyText1.color),
+ ),
+ SizedBox(
+ height: 500,
+ width: MediaQuery.of(context).size.width * 0.88,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ genRow("²", _squared, ".", _decimal, "<", _backspace),
+ genRow("+", _plus, "-", _minus, "(", _openParen),
+ genRow("4", _four, "=", _equals, "C", _clear),
+ genRow("÷", _div, "x", _mult, ")", _closeParen),
+ genRow("!", _factorial, "^", _exp, "√", _sqrt)
+ ],
+ ),
+ ),
+ ])));
+ }
+
+ _loadPage() async {
+ await _getScore();
+ if (widget.gameType == 1) {
+ //Normal
+ _goal = _score + 1;
+ }
+ }
+
+ _getScore() async {
+ SharedPreferences prefs = await SharedPreferences.getInstance();
+ if (!prefs.containsKey("score")) {
+ await prefs.setInt("score", _goal);
+ }
+ _score = prefs.getInt("score");
+ }
+
+ _updateScore(int score) async {
+ SharedPreferences prefs = await SharedPreferences.getInstance();
+ if (score > _score) {
+ _getScore();
+ await prefs.setInt('score', score);
+ }
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ }
+}
diff --git a/lib/Help.dart b/lib/Help.dart
new file mode 100644
index 0000000..104a317
--- /dev/null
+++ b/lib/Help.dart
@@ -0,0 +1,43 @@
+import 'package:flutter/material.dart';
+import 'utils.dart';
+import 'package:flutter/services.dart';
+
+class Help extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ SystemChrome.setEnabledSystemUIOverlays([]);
+ return Scaffold(
+ body: Container(
+ color: Theme.of(context).backgroundColor,
+ child: ListView(
+ children: [
+ Center(
+ child: Padding(
+ padding: EdgeInsets.all(15.0),
+ child: Text("Learn",
+ style: TextStyle(
+ fontSize: 48,
+ color: Theme.of(context).textTheme.bodyText1.color)),
+ )),
+ helpElement(
+ "!",
+ "The ! or factorial is a single number operation.\nUnlike addition where you need two numbers, factorial only needs one.\n n! is equal to all the numbers from 1 to n multiplied.\n For example, 4! = 1 x 2 x 3 x 4 = 24",
+ context),
+ helpElement(
+ "²",
+ "\"²\" or the squared operations is a single number operation.\nUnlike subtraction where you need two numbers, squaring only needs one.\nSquaring is part of a type of operations called exponentials.\nn² is equal to the number times it self.\nFor example, 4² = 4 x 4 = 16.\nIn general, an exponential multiplies the number by itself however many times the little number says.\nFor example, 4³ = 4 x 4 x 4 = 64.",
+ context),
+ helpElement(
+ "^",
+ "The \"^\" is the symbol for exponentials.\nIt is a lot simpler to write a carat then a little number for computers, so we use the carat.\nThe number after the carat works just like the little number.\nFor example, 4^2 = 4² = 4 x 4 = 16 and 4^3 = 4³ = 4 x 4 x 4 = 64.",
+ context),
+ helpElement(
+ "√",
+ "The √ or square root symbol is the opposite of the ² symbol.\nUnlike multiplication where you need two numbers, the square root only needs one.\nThe √ asks what number can be multiplied by itself to equal n.\nFor example √4 = 2 because 2² = 2 x 2 = 4",
+ context)
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/MathEngine.dart b/lib/MathEngine.dart
index 6cd4d7c..7fb5e20 100644
--- a/lib/MathEngine.dart
+++ b/lib/MathEngine.dart
@@ -1,191 +1,244 @@
-import 'dart:collection';
-import 'dart:math';
-//TODO: Implement place value multiplication for numbers greater than 9
-String postfix(String equation) {
- var operatorPrecedenceInStack = {
- "(": 0,
- "!": 7,
- "²": 5,
- "√": 5,
- "x": 4,
- "÷": 4,
- "+": 2,
- "-": 2
- };
- var operatorPrecedenceToStack = {
- "(": 10,
- "!": 8,
- "²": 6,
- "√": 6,
- "x": 3,
- "÷": 3,
- "+": 1,
- "-": 1
- };
-
- ListQueue operators = new ListQueue(); //Functioning as a queue
- ListQueue output = new ListQueue(); //Functioning as a stack
- //Cleaning input
- equation = equation.replaceAll(" ", "");
-
- //Iterating over equation
- while (equation.length > 0) {
- int numIndex = 0;
- //Keep increasing number range until failure
- while (numIndex + 1 <= equation.length && double.tryParse(equation.substring(0, numIndex + 1)) != null) {
- numIndex++;
- }
-
- if (numIndex != 0) { //Substring represents a number and not an operation
- //Queue push
- //Add the number to the end of the output list
- output.addLast(equation.substring(0, numIndex));
- //Add a space
- output.addLast(" ");
- //Remove the first string from the equation (SIDE EFFECT)
- //Truncation
- equation = equation.substring(numIndex);
- } else {
- //For the first operator
- if (operators.isEmpty) {
- //Stack push
- operators.addFirst(equation.substring(0, 1));
- //Remove the first character from the equation (SIDE EFFECT)
- equation = equation.substring(1);
- } else { //If not the first operator
- //If its a closing parenthesis
- if (equation.substring(0, 1) == ")") {
- do {
- output.addLast(operators.removeFirst());
- }
- while (operators.first != "(");
- operators.removeFirst();
- //Remove the first string from the equation (SIDE EFFECT)
- equation = equation.substring(1);
- continue;
- }
- if (operatorPrecedenceToStack[equation.substring(0, 1)] > operatorPrecedenceInStack[operators.first]) {
- //Stack push
- operators.addFirst(equation.substring(0, 1));
- //Remove the first string from the equation (SIDE EFFECT)
- equation = equation.substring(1);
- } else {
- while (operatorPrecedenceToStack[equation.substring(0, 1)] < operatorPrecedenceInStack[operators.first] && operators.isNotEmpty) {
-
- //Pop all operators with higher precedence to the output
- output.addLast(operators.removeFirst());
- //Space after operators
- output.addLast(" ");
- if (operators.isEmpty) {
- break;
- }
- }
- operators.addFirst(equation.substring(0, 1));
- //Remove the first string from the equation (SIDE EFFECT)
- equation = equation.substring(1);
- }
- }
- }
- }
- String out = "";
- while (operators.isNotEmpty) {
- output.addLast(operators.removeFirst());
- }
- while (output.isNotEmpty) {
- out += output.removeFirst();
- }
- print(out);
- return out;
-}
-
-
-
-double calculatePostfix(String equation) {
- ListQueue terms = new ListQueue(); //Functioning as a stack
- int symbolIndex = 0;
- //print(equation);
- //Convert equation to array
- List < String > eq = equation.split(" ");
- ListQueue < String > operations = new ListQueue < String > ();
-
- for (int i = 0; i < eq.length; i++) {
- var el = eq[i];
- if (double.tryParse(el) != null) {
- terms.addLast(double.tryParse(el));
- } else {
- operations.addLast(el);
- }
- }
-
- var symbol;
-
- int iterCount = operations.length;
-
- for (int j = 0; j < iterCount; j++) {
-
-
- var symbol = operations.removeFirst();
- switch (symbol) {
- case "x":
- double t1 = terms.removeLast();
- double t2 = terms.removeLast();
- terms.addLast(t1 * t2);
- break;
- case "÷":
- double t1 = terms.removeLast();
- double t2 = terms.removeLast();
- if (t1 < t2) {
- terms.addLast(t2 / t1);
- } else {
- terms.addLast(t1 / t2);
- }
- break;
- case "+":
- double t1 = terms.removeLast();
- double t2 = terms.removeLast();
- terms.addLast(t1 + t2);
- break;
- case "-":
- double t2 = terms.removeLast();
- double t1 = terms.removeLast();
- if (t2 > t1) {
- terms.addLast(t2 - t1);
- } else {
- terms.addLast(t1 - t2);
- }
- break;
- case "√":
- double t = terms.removeLast();
- terms.addLast(sqrt(t).toDouble());
- break;
- case "²":
- double t = terms.removeLast();
- terms.addLast(t * t);
- break;
- case "!":
- double t = terms.removeLast();
- terms.addLast(factorial(t));
- break;
- }
-
- }
- return terms.removeLast();
-
-}
-
-double factorial(double f) {
- if (f == 0) {
- return 1.0;
- }
- return f * factorial(f - 1);
-}
-
-double mathEngine(String s) {
- //print(postfix(s));
- return calculatePostfix(postfix(s));
-}
-
-
-void main() {
- print(mathEngine("22+22+4+78"));
-}
\ No newline at end of file
+import 'dart:collection';
+import 'dart:math';
+
+String postfix(String equation) {
+ var operatorPrecedenceInStack = {
+ "(": 0,
+ "!": 7,
+ "²": 5,
+ "√": 5,
+ "x": 4,
+ "÷": 4,
+ "+": 2,
+ "-": 2
+ };
+ var operatorPrecedenceToStack = {
+ "(": 10,
+ "!": 8,
+ "²": 6,
+ "√": 6,
+ "x": 3,
+ "÷": 3,
+ "+": 1,
+ "-": 1
+ };
+
+ ListQueue operators = new ListQueue(); //Functioning as a queue
+ ListQueue output = new ListQueue(); //Functioning as a stack
+ //Cleaning input
+ equation = equation.replaceAll(" ", "");
+
+ //Iterating over equation
+ while (equation.length > 0) {
+ int numIndex = 0;
+ //Keep increasing number range until failure
+ while (numIndex + 1 <= equation.length &&
+ double.tryParse(equation.substring(0, numIndex + 1)) != null) {
+ numIndex++;
+ }
+
+ if (numIndex != 0) {
+ //Substring represents a number and not an operation
+ //Queue push
+ //Add the number to the end of the output list
+ output.addLast(equation.substring(0, numIndex));
+ //Add a space
+ output.addLast(" ");
+ //Remove the first string from the equation (SIDE EFFECT)
+ //Truncation
+ equation = equation.substring(numIndex);
+ } else {
+ //For the first operator
+ if (operators.isEmpty) {
+ //Stack push
+ operators.addFirst(equation.substring(0, 1));
+ //Remove the first character from the equation (SIDE EFFECT)
+ equation = equation.substring(1);
+ } else {
+ //If not the first operator
+ //If its a closing parenthesis
+ if (equation.substring(0, 1) == ")") {
+ do {
+ output.addLast(operators.removeFirst());
+ output.addLast(" ");
+ } while (operators.first != "(");
+ operators.removeFirst();
+ //Remove the first string from the equation (SIDE EFFECT)
+ equation = equation.substring(1);
+ continue;
+ }
+ if (operatorPrecedenceToStack[equation.substring(0, 1)] >
+ operatorPrecedenceInStack[operators.first]) {
+ //Stack push
+ operators.addFirst(equation.substring(0, 1));
+ //Remove the first string from the equation (SIDE EFFECT)
+ equation = equation.substring(1);
+ } else {
+ while (operatorPrecedenceToStack[equation.substring(0, 1)] <
+ operatorPrecedenceInStack[operators.first] &&
+ operators.isNotEmpty) {
+ //Pop all operators with higher precedence to the output
+ output.addLast(operators.removeFirst());
+ //Space after operators
+ output.addLast(" ");
+ if (operators.isEmpty) {
+ break;
+ }
+ }
+ operators.addFirst(equation.substring(0, 1));
+ //Remove the first string from the equation (SIDE EFFECT)
+ equation = equation.substring(1);
+ }
+ }
+ }
+ }
+ String out = "";
+ while (operators.isNotEmpty) {
+ output.addLast(operators.removeFirst());
+ }
+ while (output.isNotEmpty) {
+ out += output.removeFirst();
+ }
+ return out;
+}
+
+double calculate(String e) {
+ ListQueue stack = new ListQueue();
+ ListQueue equation = new ListQueue.from(e.split(" "));
+
+ print(equation);
+
+ int size = equation.length;
+
+ for (int i = 0; i < size; i++) {
+ var element = equation.removeFirst();
+ if (double.tryParse(element) != null) {
+ stack.addLast(double.tryParse(element));
+ } else {
+ switch (element) {
+ case '+':
+ double term1 = stack.removeFirst();
+ double term2 = stack.removeFirst();
+ stack.addLast(term1 + term2);
+ break;
+ case '-':
+ double term1 = stack.removeFirst();
+ double term2 = stack.removeFirst();
+ stack.addLast(term1 - term2);
+ break;
+ case 'x':
+ double term1 = stack.removeFirst();
+ double term2 = stack.removeFirst();
+ stack.addLast(term1 * term2);
+ break;
+ case '÷':
+ double term1 = stack.removeFirst();
+ double term2 = stack.removeFirst();
+ stack.addLast(term1 / term2);
+ break;
+ case '√':
+ double term1 = stack.removeLast();
+ stack.addLast(sqrt(term1).toDouble());
+ break;
+ case '!':
+ double term1 = stack.removeFirst();
+ stack.addLast(factorial(term1));
+ break;
+ case '²':
+ double term1 = stack.removeFirst();
+ stack.addLast(term1 * term1);
+ break;
+ case '^':
+ double term1 = stack.removeFirst();
+ double term2 = stack.removeFirst();
+ stack.addLast(pow(term1, term2));
+ break;
+ }
+ }
+ print(stack);
+ }
+
+ return stack.removeFirst();
+}
+
+double calculatePostfix(String equation) {
+ ListQueue terms = new ListQueue(); //Functioning as a stack
+ int symbolIndex = 0;
+ //print(equation);
+ //Convert equation to array
+// ListQueue eq = ListQueue.from(equation.split(" "));
+ List eq = equation.split(" ");
+ ListQueue operations = new ListQueue();
+ for (int i = 0; i < eq.length; i++) {
+ var el = eq[i];
+ if (double.tryParse(el) != null) {
+ terms.addLast(double.tryParse(el));
+ } else {
+ operations.addLast(el);
+ }
+ }
+
+ var symbol;
+
+ int iterCount = operations.length;
+
+ for (int j = 0; j < iterCount; j++) {
+ var symbol = operations.removeFirst();
+ switch (symbol) {
+ case "x":
+ double t1 = terms.removeLast();
+ double t2 = terms.removeLast();
+ terms.addFirst(t1 * t2);
+ break;
+ case "÷":
+ double t1 = terms.removeLast();
+ double t2 = terms.removeLast();
+ if (t1 < t2) {
+ terms.addFirst(t2 / t1);
+ } else {
+ terms.addFirst(t1 / t2);
+ }
+ break;
+ case "+":
+ double t1 = terms.removeLast();
+ double t2 = terms.removeLast();
+ terms.addFirst(t1 + t2);
+ break;
+ case "-":
+ double t2 = terms.removeLast();
+ double t1 = terms.removeLast();
+ if (t2 > t1) {
+ terms.addFirst(t2 - t1);
+ } else {
+ terms.addFirst(t1 - t2);
+ }
+ break;
+ case "√":
+ double t = terms.removeLast();
+ terms.addFirst(sqrt(t).toDouble());
+ break;
+ case "²":
+ double t = terms.removeLast();
+ terms.addFirst(t * t);
+ break;
+ case "!":
+ double t = terms.removeLast();
+ terms.addFirst(factorial(t));
+ break;
+ }
+ }
+ return terms.removeLast();
+}
+
+double factorial(double f) {
+ if (f == 0) {
+ return 1.0;
+ }
+ return f * factorial(f - 1);
+}
+
+double mathEngine(String s) {
+ //print(postfix(s));
+ return calculate(postfix(s));
+}
+
diff --git a/lib/MathString.dart b/lib/MathString.dart
deleted file mode 100644
index 5066316..0000000
--- a/lib/MathString.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-void main() {
- print(parseEquation("4x4"));
- print(parseEquation("(4x4)"));
- print(parseEquation("16÷16"));
- print(parseEquation("(4x4)÷(4x4)"));
- //print(parseEquation("4+4-√4-√4"));
- print(parseEquation("(4+4)-(4+4)"));
-
-}
-
-int parseEquation(String equation) {
- var values = [];
- int val = 0;
- if (!equation.contains("(")) {
- return oop(equation);
- }
- while (equation.contains('(')) {
- values.add(oop(equation.substring(equation.indexOf('(')+1, equation.indexOf(')'))));
- var temp = values[values.length-1];
- equation = equation.replaceRange(equation.indexOf('('), equation.indexOf(')')+1,"$temp");
- }
- if(int.tryParse(equation) == null) {
- return parseEquation(equation);
- } else {
- for (int i = 0; i < values.length; i++) {
- val += values[i];
- }
- return val;
- }
-
-}
-
-int calculate(int opIndex, String subEquation) {
- //Remove all spaces
- subEquation = subEquation.replaceAll(" ","");
- //Value to be returned
- int val = int.parse(subEquation.substring(0,opIndex));
- //Iterate through the subEquation performing operations as seen
- while(subEquation.length >= 1) {
- switch (subEquation.substring(0,1)) {
- case '÷':
- val ~/= int.parse(subEquation.substring(opIndex-1));
- break;
- case 'x':
- val *= int.parse(subEquation.substring(opIndex));
- break;
- case '+':
- val += int.parse(subEquation.substring(opIndex));
- break;
- case '-':
- val -= int.parse(subEquation.substring(opIndex));
- break;
- }
- //Remove the first character in the equation
- subEquation = subEquation.substring(1);
- }
-
- //Return the computed value
- return val;
-}
-
-int oop(String subEquation) {
- var values = [];
- int val = 0;
- while (subEquation.contains('\u221a')) {
- subEquation = subEquation.replaceRange(subEquation.indexOf('\u221a'), subEquation.indexOf('\u221a')+2,"2");
- }
- subEquation = oopPair(subEquation,"\u00F7", "x");
- subEquation = oopPair(subEquation,"+", "-");
- return int.parse(subEquation);
-}
-
-List digOp(String op, String equation) {
- List vals = [];
- int startIndex = 1;
- int opIndex = equation.indexOf(op);
- int endIndex = opIndex + 1;
- if (opIndex - 2 >= 0 && int.tryParse(equation.substring(opIndex -2, opIndex)) != null) {
- startIndex = opIndex - 2;
- }
- if (opIndex + 3 <= equation.length && int.tryParse(equation.substring(opIndex+1, opIndex+3)) != null) {
- endIndex = opIndex + 3;
- }
- return [startIndex, endIndex];
-}
-bool isDoubleDigit(String s, int index) {
- if (int.tryParse(s.substring(index, index+3)) != null) {
- return true;
- }
- return false;
-}
-
-int calculate2(String subEquation) {
- //Remove all spaces
- subEquation = subEquation.replaceAll(" ","");
- //Value to be returned
- int val;
- //Array of values for order of operations
- var values = [];
- //If the first number is two digits
- if (int.tryParse(subEquation.substring(0,2)) != null) {
- val = int.parse(subEquation.substring(0,2));
- }
- else {
- val = int.parse(subEquation.substring(0,1));
- }
- //Iterate through the subEquation performing operations as seen
- while(subEquation.length >= 1) {
- switch (subEquation.substring(0,1)) {
- case '/':
- val ~/= int.parse(subEquation.substring(1,2));
- subEquation = subEquation.substring(1);
- break;
- case 'x':
- val *= int.parse(subEquation.substring(1,2));
- subEquation = subEquation.substring(1);
- break;
- case '+':
- val += int.parse(subEquation.substring(1,2));
- subEquation = subEquation.substring(1);
- break;
- case '-':
- val -= int.parse(subEquation.substring(1,2));
- subEquation = subEquation.substring(1);
- break;
- }
- //Remove the first character in the equation
- subEquation = subEquation.substring(1);
- }
-
- //Return the computed value
- return val;
-}
-
-String oopPair(String subEquation, String char1, String char2) {
- int temp;
- while(subEquation.contains(char1) || subEquation.contains(char2)) {
- if (subEquation.contains(char2)) {
- if (subEquation.contains(char1)) {
- if(subEquation.indexOf(char2) < subEquation.indexOf(char1)) {
- if (subEquation.length > 3) {
- List indeces = digOp(char2, subEquation);
- temp = calculate(subEquation.indexOf(char2), subEquation.substring(indeces[0], indeces[1]));
- subEquation = subEquation.replaceRange(indeces[0],indeces[1],"$temp");
- } else {
- temp = calculate2(subEquation.substring(subEquation.indexOf(char2)-1, subEquation.indexOf(char2)+2));
- subEquation = subEquation.replaceRange(subEquation.indexOf(char2)-1, subEquation.indexOf(char2)+2,"$temp");
- }
- }
- else {
- if (subEquation.length > 3) {
- List indeces = digOp(char1, subEquation);
- temp = calculate(subEquation.indexOf(char1), subEquation.substring(indeces[0], indeces[1]));
- subEquation = subEquation.replaceRange(indeces[0],indeces[1],"$temp");
- } else {
- temp = calculate2(subEquation.substring(subEquation.indexOf(char1)-1, subEquation.indexOf(char1)+2));
- subEquation = subEquation.replaceRange(subEquation.indexOf(char1)-1, subEquation.indexOf(char1)+2,"$temp");
- }
- }
- }
- else {
- if (subEquation.length > 3) {
- List indeces = digOp(char2, subEquation);
-
- temp = calculate(subEquation.indexOf(char2), subEquation.substring(indeces[0], indeces[1]));
- subEquation = subEquation.replaceRange(indeces[0],indeces[1],"$temp");
- } else {
- temp = calculate2(subEquation.substring(subEquation.indexOf(char2)-1, subEquation.indexOf(char2)+2));
- subEquation = subEquation.replaceRange(subEquation.indexOf(char2)-1, subEquation.indexOf(char2)+2,"$temp");
- }
- }
- }
- else {
- if (subEquation.length > 3) {
- List indeces = digOp(char1, subEquation);
- temp = calculate(subEquation.indexOf(char1), subEquation.substring(indeces[0], indeces[1]));
- subEquation = subEquation.replaceRange(indeces[0],indeces[1],"$temp");
- } else {
- temp = calculate2(subEquation.substring(subEquation.indexOf(char1)-1, subEquation.indexOf(char1)+2));
- subEquation = subEquation.replaceRange(subEquation.indexOf(char1)-1, subEquation.indexOf(char1)+2,"$temp");
- }
- }
- }
- return subEquation;
-}
-String regex(String string) {
- RegExp re = new RegExp('\\d{0,2}');
- Iterable terms = re.allMatches(string);
- int startIndex = terms.first.start;
- int endIndex = terms.last.end;
- return string.substring(startIndex, endIndex);
-}
-
-Iterable regex1(String string) {
- RegExp re = new RegExp('\\d{0,2}');
- Iterable terms = re.allMatches(string);
- return terms;
-}
\ No newline at end of file
diff --git a/lib/Menu.dart b/lib/Menu.dart
new file mode 100644
index 0000000..4231034
--- /dev/null
+++ b/lib/Menu.dart
@@ -0,0 +1,71 @@
+import 'package:flutter/material.dart';
+import 'utils.dart';
+import 'Themes.dart';
+import 'package:flutter/services.dart';
+
+class Menu extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ SystemChrome.setEnabledSystemUIOverlays([]);
+ return FutureBuilder(
+ future: Future.delayed(Duration(seconds: minTime), () => true),
+ builder: (BuildContext context, AsyncSnapshot snapshot) {
+ Widget _body;
+ if (snapshot.hasData) {
+ _body = Container(
+ color: Theme.of(context).backgroundColor,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Image(image: AssetImage(logos[theme]), height: 200.0),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Padding(
+ padding: EdgeInsets.symmetric(vertical: 15.0),
+ child: newButton(
+ "Play",
+ () => Navigator.of(context).pushNamed('Play'),
+ context),
+ ),
+ Padding(
+ padding: EdgeInsets.symmetric(vertical: 15.0),
+ child: newButton(
+ "Arcade",
+ () => Navigator.of(context).pushNamed('Arcade'),
+ context),
+ ),
+ Padding(
+ padding: EdgeInsets.symmetric(vertical: 15.0),
+ child: newButton(
+ "Learn",
+ () => Navigator.of(context).pushNamed('Help'),
+ context),
+ ),
+ Padding(
+ padding: EdgeInsets.symmetric(vertical: 15.0),
+ child: newButton(
+ "About",
+ () => Navigator.of(context).pushNamed('About'),
+ context),
+ ),
+ ],
+ )
+ ],
+ ),
+ );
+ } else {
+ _body = new Scaffold(
+ backgroundColor: Theme.of(context).backgroundColor,
+ body: Container(
+ color: Theme.of(context).backgroundColor,
+ child: Center(
+ child: Image(
+ image: AssetImage(logosLoading[theme]),
+ height: 200.0),
+ )));
+ }
+ return _body;
+ });
+ }
+}
diff --git a/lib/Old UI.dart b/lib/Old UI.dart
index 84b4d38..ce6b1b5 100644
--- a/lib/Old UI.dart
+++ b/lib/Old UI.dart
@@ -1,46 +1,46 @@
-import 'package:flutter/material.dart';
-Widget UI() {return Row(
-children: [
-Expanded (
-flex: 3,
-child: Padding(
-padding: EdgeInsets.only(left: 10, right: 10),
-child: RaisedButton(
-color: Color(0xffEE6E48),
-shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)),
-onPressed: _four, child: Text("4", style: TextStyle(fontSize: 25, color: Color(0xff565C5C))),padding: EdgeInsets.all(11.5),)),
-),
-Expanded (
-flex: 3,
-child: Padding(
-padding: EdgeInsets.only(left: 10, right: 10),
-child: RaisedButton(
-color: Color(0xffEE6E48),
-shape: RoundedRectangleBorder(borderRadius:
-BorderRadius.circular(30)),
-onPressed: _equals,
-child: Text("=", style: TextStyle(fontSize: 28, color: Color(0xff565C5C)),),
-padding: EdgeInsets.all(10),))
-),
-],
-mainAxisAlignment: MainAxisAlignment.spaceEvenly
-),
-Row(children: [
-RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _plus, child: Text("+", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _minus, child: Text("-", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _backspace, child: Text("DEL", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
-Row(children: [
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _mult, child: Text("x", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _div, child: Text("\u00F7", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _clear, child: Text("C", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-
-],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
-
-Row(children: [
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _sqrt, child: Text("\u221a", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _openParen, child: Text("(" , style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _closeParen, child: Text(")", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
-],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
-],
+import 'package:flutter/material.dart';
+Widget UI() {return Row(
+children: [
+Expanded (
+flex: 3,
+child: Padding(
+padding: EdgeInsets.only(left: 10, right: 10),
+child: RaisedButton(
+color: Color(0xffEE6E48),
+shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)),
+onPressed: _four, child: Text("4", style: TextStyle(fontSize: 25, color: Color(0xff565C5C))),padding: EdgeInsets.all(11.5),)),
+),
+Expanded (
+flex: 3,
+child: Padding(
+padding: EdgeInsets.only(left: 10, right: 10),
+child: RaisedButton(
+color: Color(0xffEE6E48),
+shape: RoundedRectangleBorder(borderRadius:
+BorderRadius.circular(30)),
+onPressed: _equals,
+child: Text("=", style: TextStyle(fontSize: 28, color: Color(0xff565C5C)),),
+padding: EdgeInsets.all(10),))
+),
+],
+mainAxisAlignment: MainAxisAlignment.spaceEvenly
+),
+Row(children: [
+RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _plus, child: Text("+", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _minus, child: Text("-", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6), shape: CircleBorder(), onPressed: _backspace, child: Text("DEL", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
+Row(children: [
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _mult, child: Text("x", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _div, child: Text("\u00F7", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _clear, child: Text("C", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+
+],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
+
+Row(children: [
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _sqrt, child: Text("\u221a", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _openParen, child: Text("(" , style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+RaisedButton(color: Color(0xffCCD2C6),shape: CircleBorder(), onPressed: _closeParen, child: Text(")", style: TextStyle(fontSize: 24, color: Color(0xff565C5C)),), padding: EdgeInsets.all(15),),
+],mainAxisAlignment: MainAxisAlignment.spaceEvenly,),
+],
)}
\ No newline at end of file
diff --git a/lib/Themes.dart b/lib/Themes.dart
new file mode 100644
index 0000000..00f5d9e
--- /dev/null
+++ b/lib/Themes.dart
@@ -0,0 +1,163 @@
+import 'package:flutter/material.dart';
+import 'dart:async';
+import 'package:shared_preferences/shared_preferences.dart';
+
+int theme;
+
+Future getTheme() async {
+ SharedPreferences prefs = await SharedPreferences.getInstance();
+ if (!prefs.containsKey("theme")) {
+ await prefs.setInt("theme", 0);
+ }
+ theme = prefs.getInt("theme");
+ return theme;
+}
+
+List themes = [theme9];
+List logosLoading = ["assets/images/logo1.gif"];
+
+List logos = ["assets/images/logo1.png"];
+
+//TI Datamouth 2500
+ThemeData theme1 = new ThemeData(
+ accentColor: Color(0xffCED4CC),
+ //Buttons
+ backgroundColor: Color(0xffCED4CC),
+ //Background
+
+ primaryColor: Color(0xffF6AC2D),
+ //Logo and Accents
+ primaryColorDark: Color(0xff8D9687),
+ //Window color
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff565C5C)),
+ headline3: TextStyle(color: Color(0xff565C5C)),
+ headline4: TextStyle(color: Color(0xff565C5C))));
+
+//TI 81
+ThemeData theme2 = new ThemeData(
+ accentColor: Color(0xff1F3037),
+ backgroundColor: Color(0xff172432),
+ primaryColor: Color(0xff226BC1),
+ primaryColorDark: Color(0xff83CCDF),
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff35A2DF)),
+ headline3: TextStyle(color: Colors.white),
+ headline4: TextStyle(color: Color(0xff172432)),
+ ),
+);
+
+//Snow Storm
+ThemeData theme3 = new ThemeData(
+ accentColor: Color(0xff3b3b37),
+ //Buttons
+ backgroundColor: Color(0xff2b2b2b),
+ //Background
+ primaryColor: Color(0xff004D0D),
+ //Logo and =s
+ primaryColorDark: Color(0xff004D0D),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff8a8a81)), //Text
+ headline3: TextStyle(color: Color(0xff219e21)), //Scores
+ headline4: TextStyle(color: Color(0xff219e21)), //Value
+ ),
+);
+
+//Unmarked Ocean
+ThemeData theme4 = new ThemeData(
+ accentColor: Color(0xff144B59),
+ //Buttons
+ backgroundColor: Color(0xff3B6571),
+ //Background
+ primaryColor: Color(0xff144B59),
+ //Logo and =s
+ primaryColorDark: Color(0xffBDE8E5),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xffBDE8E5)), //Text
+ headline3: TextStyle(color: Color(0xffBDE8E5)), //Scores
+ headline4: TextStyle(color: Color(0xff144B59)), //Value
+ ),
+);
+
+ThemeData theme5 = new ThemeData(
+ accentColor: Color(0xff9C1125),
+ //Buttons
+ backgroundColor: Color(0xff800000),
+ //Background
+ primaryColor: Color(0xff9C1125),
+ //Logo and =s
+ primaryColorDark: Color(0xff9C1125),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Colors.white), //Text
+ headline3: TextStyle(color: Colors.white), //Scores
+ headline4: TextStyle(color: Color(0xffC0C0C0)), //Value
+ ),
+);
+
+ThemeData theme6 = new ThemeData(
+ accentColor: Color(0xffEAA021),
+ //Buttons
+ backgroundColor: Color(0xffF5C24A),
+ //Background
+ primaryColor: Color(0xff504E52),
+ //Logo and =s
+ primaryColorDark: Color(0xffEAA021),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Colors.white), //Text
+ headline3: TextStyle(color: Colors.white), //Scores
+ headline4: TextStyle(color: Colors.white), //Value
+ ),
+);
+
+ThemeData theme7 = new ThemeData(
+ accentColor: Color(0xffD6E9F3),
+ //Buttons
+ backgroundColor: Color(0xff282C34),
+ //Background
+ primaryColor: Color(0xffE06C75),
+ //Logo and =s
+ primaryColorDark: Color(0xffD6E9F3),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff55606D)), //Text
+ headline3: TextStyle(color: Color(0xff55606D)), //Scores
+ headline4: TextStyle(color: Color(0xff282C34)), //Value
+ ),
+);
+
+ThemeData theme8 = new ThemeData(
+ accentColor: Color(0xff919BE5),
+ //Buttons
+ backgroundColor: Color(0xff232434),
+ //Background
+ primaryColor: Color(0xff6CB49F),
+ //Logo and =s
+ primaryColorDark: Color(0xff363E7E),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff363E7E)), //Text
+ headline3: TextStyle(color: Color(0xff919BE5)), //Scores
+ headline4: TextStyle(color: Color(0xff919BE5)), //Value
+ ),
+);
+
+//BMO
+ThemeData theme9 = new ThemeData(
+ accentColor: Color(0xffCCFFDC),
+ //Buttons
+ backgroundColor: Color(0xff5CB19E),
+ //Background
+ primaryColor: Color(0xff6CB49F),
+ //Logo and =s
+ primaryColorDark: Color(0xffCCFFDC),
+ //Window
+ textTheme: TextTheme(
+ bodyText1: TextStyle(color: Color(0xff001029)), //Text
+ headline3: TextStyle(color: Color(0xff001029)), //Scores
+ headline4: TextStyle(color: Color(0xff5EE177)), //Value
+ ),
+);
diff --git a/lib/app_state.dart b/lib/app_state.dart
deleted file mode 100644
index 96d2753..0000000
--- a/lib/app_state.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-class AppState {
- bool isLoading;
- String user;
-
- //Constructor
- AppState({this.isLoading = false, this.user});
-
- //A constructor for when the app is loading
- factory AppState.loading() => new AppState(isLoading: true);
-
- @override
- String toString() {
- return 'AppState(isLoading: $isLoading, user: $user';
- }
-}
diff --git a/lib/app_state_container.dart b/lib/app_state_container.dart
deleted file mode 100644
index de59bee..0000000
--- a/lib/app_state_container.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-import 'app_state.dart';
-import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
-import 'dart:async';
-
-class AppStateContainer extends StatefulWidget {
- //Container that allows for loading state management
- final AppState state;
- final Widget child;
-
- AppStateContainer({
- @required this.child,
- this.state,
- });
-
- //Method to allow universal access to state management
- static _AppStateContainerState of(BuildContext context) {
- return (context.inheritFromWidgetOfExactType(_InheritedStateContainer)
- as _InheritedStateContainer)
- .data;
- }
-
- @override
- _AppStateContainerState createState() => _AppStateContainerState();
-}
-
-class _AppStateContainerState extends State {
- AppState state;
-
- @override
- void initState() {
- super.initState();
- if (widget.state != null) {
- state = widget.state;
- } else {
- state = new AppState.loading();
- startCountdown();
- }
- }
-
- Future startCountdown() async {
- const timeOut = const Duration(seconds: 2);
- new Timer(timeOut, () {
- setState(() {
- state.isLoading = false;
- });
- });
- }
-
- @override
- Widget build(BuildContext context) {
- return new _InheritedStateContainer(data: this, child: widget.child);
- }
-}
-
-class _InheritedStateContainer extends InheritedWidget {
- //Data to pass down
- final _AppStateContainerState data;
-
- _InheritedStateContainer({
- Key key,
- @required this.data,
- @required Widget child,
- }) : super(key: key, child: child);
-
- //Method called by default when this widget data is changed
- @override
- bool updateShouldNotify(InheritedWidget oldWidget) => true;
-}
diff --git a/lib/audio.dart b/lib/audio.dart
index e705019..8adbd83 100644
--- a/lib/audio.dart
+++ b/lib/audio.dart
@@ -1,24 +1,24 @@
-import 'dart:io';
-
-import 'package:audioplayers/audioplayers.dart';
-import 'package:audioplayers/audio_cache.dart';
-
-class Audio {
- AudioCache audioCache = AudioCache(prefix: 'audio/');
-
- /// Plays a single run of the given [file]
- Future play(String file, {volume = 1.0}) {
- return audioCache.play(file, volume: volume, mode: PlayerMode.LOW_LATENCY);
- }
-
-
- /// Prefetch an audio in the cache
- Future load(String file) {
- return audioCache.load(file);
- }
-
- /// Clears all the audios in the cache
- void clearAll() {
- audioCache.clearCache();
- }
+import 'dart:io';
+
+import 'package:audioplayers/audioplayers.dart';
+import 'package:audioplayers/audio_cache.dart';
+
+class Audio {
+ AudioCache audioCache = AudioCache(prefix: 'audio/');
+
+ /// Plays a single run of the given [file]
+ Future play(String file, {volume = 1.0}) {
+ return audioCache.play(file, volume: volume, mode: PlayerMode.LOW_LATENCY);
+ }
+
+
+ /// Prefetch an audio in the cache
+ Future load(String file) {
+ return audioCache.load(file);
+ }
+
+ /// Clears all the audios in the cache
+ void clearAll() {
+ audioCache.clearCache();
+ }
}
\ No newline at end of file
diff --git a/lib/dataAccess.dart b/lib/dataAccess.dart
deleted file mode 100644
index 9008e2f..0000000
--- a/lib/dataAccess.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-import 'dart:async';
-import 'package:sqflite/sqflite.dart';
-
-final String listTable = "MonitorLists";
-final String dataTable = "MonitorData";
-
-class DataAccess {
- static final DataAccess _instance = DataAccess._internal();
- Database _monitorLists;
- Database _monitorData;
-
- factory DataAccess() {
- return _instance;
- }
-
- DataAccess._internal();
-
- Future open() async {
- var databasePath = await getDatabasesPath();
- String listPath = databasePath + "\\mLists.db";
- String dataPath = databasePath + "\\dList.db";
-
- _monitorLists = await openDatabase(listPath, version: 1,
- onCreate: (Database db, int version) async {
- await db.execute('''
- create table MonitorLists (
- id interger primary key autoincrement,
- listName text not null,
- unit text not null
- );
- ''');
- });
-
- _monitorData = await openDatabase(dataPath, version: 1,
- onCreate: (Database db, int version) async {
- await db.execute('''
- create table MonitorData (
- id integer primary key autoincrement,
- listId integer not null,
- value int not null,
- date date not null,
- foreign key (listId) references MonitorLists(id)
- );
- ''');
- });
- }
-
- Future> getLists() async {
- var data = await _monitorLists.query("")
- }
-}
\ No newline at end of file
diff --git a/lib/db.dart b/lib/db.dart
deleted file mode 100644
index 6ab3166..0000000
--- a/lib/db.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-import 'dart:async';
-import 'package:sqflite/sqflite.dart';
-
-final String scoreTable = "Score";
-
-class DataAccess {
- static final DataAccess _instance = DataAccess._internal();
- Database _db;
-
- factory DataAccess() {
- return _instance;
- }
-
- DataAccess._internal();
-
- Future open() async {
- var databasePath = await getDatabasesPath();
- String path = databasePath + "\td.db";
-
- _db = await openDatabase(path, version: 1,
- onCreate: (Database db, int version) async {
- await db.execute('''
- create table $scoreTable (
- score int default 0
- );
- ''');
- });
- }
-
- Future getScore() async {
- var res = await _db.query(scoreTable);
- return res[0];
- }
-
- Future updateScore(int s) async {
- return _db.update(scoreTable, s);
- }
-}
diff --git a/lib/main.dart b/lib/main.dart
index 921a372..ac8059d 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,385 +1,42 @@
-import 'dart:async';
-import 'package:flame/flame.dart';
-import 'package:flutter/material.dart';
-import 'package:shared_preferences/shared_preferences.dart';
-import 'MathEngine.dart';
-import 'package:flutter/services.dart';
-import 'package:splashscreen/splashscreen.dart';
-
-void main() => runApp(MyApp());
-
-class MyApp extends StatelessWidget {
- // This widget is the root of your application.
- @override
- Widget build(BuildContext context) {
-
- return MaterialApp(
- title: 'Four Fours',
- debugShowCheckedModeBanner: false,
- theme: ThemeData(
- primarySwatch: Colors.blue,
- ),
- home: MyHomePage(title: 'Four Fours'),
- );
- }
-}
-
-class MyHomePage extends StatefulWidget {
- MyHomePage({Key key, this.title}) : super(key: key);
- final String title;
-
- @override
- _MyHomePageState createState() => _MyHomePageState();
-}
-
-class _MyHomePageState extends State {
- int _counter = 4;
- String _value = "";
- int _goal = 0;
- int _score;
- int _computation;
- Widget _body;
- bool _hide = false;
- String _alert = "";
- Color orange = Color(0xffEE6E48);
- Color darkGrey = Color(0xff565C5C);
- Color lightGrey = Color(0xffCCD2C6);
- Timer _timer;
-
- @override
- void initState() {
- super.initState();
- _body = loadingPage();
- }
-
- void _plus() {
- setState(() {
- _value+= "+";
- });
- }
-
- void correctSound() {
- Flame.audio.play("correct.mp3");
- }
-
- void squared() {
- setState(() {
- _value += '\u00B2';
- });
- }
-
- void _factorial() {
- setState(() {
- _value += '!';
- });
- }
-
- void _exp() {
- setState(() {
- _value+= "^";
- });
- }
-
- void _squared() {
- setState(() {
- _value += "²";
- });
- }
-
- void _minus() {
- setState(() {
- _value+="-";
- });
- }
-
- void _div() {
- setState(() {
- _value+="\u00F7";
- });
- }
-
- void _mult() {
- setState(() {
- _value+="x";
- });
- }
-
- void _sqrt() {
- setState(() {
- _value += '\u221a';
- });
- }
-
- void _openParen() {
- setState(() {
- _value+="(";
- });
- }
-
- void _closeParen() {
- setState(() {
- _value+=")";
- });
- }
-
- void _decimal() {
- setState(() {
- _value += ".";
- });
- }
-
- void _clear() {
- setState(() {
- _value = "";
- _counter = 4;
- });
- }
-
- void _equals() {
- setState(() {
- _computation = mathEngine(_value).round();
- if (_computation == _goal && _counter == 0) {
- _goal++;
- correctSound();
- _updateScore(_goal);
- _clear();
- } else {
- if(_counter != 0) {
- _alert="You must use 4 fours";
- _value += "=$_computation";
- } else {
- _alert = "Try Again!";
- _value += "=$_computation";
- }
- }
- });
- }
-
- void _four() {
- setState(() {
- if (_counter == 0) {
- _alert = "Only 4 Fours allowed!!";
- } else {
- _value += "4";
- _counter--;
- }
- });
- }
-
- void _backspace() {
- setState(() {
- int len = _value.length;
- if (int.tryParse(_value.substring(len-1)) != null) {
- _counter++;
- }
- _value = _value.substring(0, len-1);
- });
- }
-
- void hide() {
- setState(() {
- while(true) {
- if (!(_score == null)) {
- _hide = false;
-
- break;
- } else {
- _hide = true;
- }
- }
- });
- }
-
- void startTimer(int t) {
- _timer = Timer(new Duration(seconds: t), hide);
- }
-
-
- @override
- Widget build(BuildContext context) {
- Flame.audio.load('correct.mp3');
- _loadPage();
- SystemChrome.setEnabledSystemUIOverlays([]);
- return new Scaffold(
- backgroundColor: Color(0xffCED4CC),
- body: _body
- );
- startTimer(4);
-// return new AnimatedOpacity(
-// opacity: _hide ? 0.0 : 1.0,
-// duration: Duration(milliseconds: 500),
-// child: SplashScreen(
-// seconds: 4,
-// navigateAfterSeconds: new Scaffold(
-// backgroundColor: Color(0xffCED4CC),
-// body: _body
-// ),
-// image: new Image(image: AssetImage("assets/images/logo.gif")),
-// backgroundColor: Color(0xffCED4CC),
-// loaderColor: orange,
-// )
-// );
- }
-
- Widget genRow(String t1, Function f1, String t2, Function f2, String t3,
- Function f3) {
- return Row(
- children: [
- newButton(t1, f1, lightGrey, darkGrey),
- newButton(t2, f2, lightGrey, darkGrey),
- newButton(t3, f3, lightGrey, darkGrey),
- ],
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- );
- }
-
- Widget newButton(String text, Function f, Color backgroundColor,
- Color textColor) {
- return RaisedButton(color: backgroundColor,
- shape: RoundedRectangleBorder(
- borderRadius: new BorderRadius.circular(18.0)),
- onPressed: f,
- child: Text("$text", style: TextStyle(fontSize: 24, color: textColor),),
- padding: EdgeInsets.all(15),);
- }
-
- Widget loadingPage() {
- return new Center(
- child: Column(
- children: [
- CircularProgressIndicator(),
-// Image(image: AssetImage("assets/images/logo.gif")),
- ],
- )
- );
- }
-
- Widget gamePage() {
- return Padding(
- padding: EdgeInsets.only(top: MediaQuery
- .of(context)
- .size
- .height * 0.08),
- child: Center(
- child: Column(
-// mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Row(
- children: [
- Column(
- children: [
- Text("Goal:"),
- Text('$_goal',
- style: Theme.of(context).textTheme.display2,),
- ],
- ),
- Column(
- children: [
- Text("Highscore:"),
- Text('$_score',
- style: Theme
- .of(context)
- .textTheme
- .display2,),
- ],
- ),
- ],
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- ),
-
-
- Container(
- color: Colors.transparent,
- child: Container(
- child: SizedBox(
- width: MediaQuery
- .of(context)
- .size
- .width * 0.9,
- height: MediaQuery
- .of(context)
- .size
- .height * 0.1,
- child: Center(
- child: Text(
- '$_value',
- style: Theme
- .of(context)
- .textTheme
- .display1,
- textAlign: TextAlign.center,
- ),
- )
- ),
- decoration: BoxDecoration(
- color: Color(0xff8D9687),
- borderRadius: BorderRadius.circular(MediaQuery
- .of(context)
- .size
- .width * 0.04)
- ),
- )
-
- ),
-
- Text(
- "Fours Remaining: $_counter",
- textAlign: TextAlign.center,
- ),
-
-// Text('$_alert'),
- SizedBox(
- height: 500,
- width: MediaQuery
- .of(context)
- .size
- .width * 0.88,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- genRow("²", _squared, ".", _decimal, "<", _backspace),
- genRow("+", _plus, "-", _minus, "(", _openParen),
- genRow("4", _four, "=", _equals, "C", _clear),
- genRow("÷", _div, "x", _mult, ")", _closeParen),
- genRow("!", _factorial, "^", _exp, "√", _sqrt)
- ],
- ),
- ),
-
- ]
- )
- )
- );
- }
-
- _loadPage() async {
- await _getScore();
- setState(() {
- _body = gamePage();
- });
-
- }
-
- _getScore() async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- if (!prefs.containsKey("score")) {
- await prefs.setInt("score", _goal);
- }
- _score = prefs.getInt("score");
- }
-
- _updateScore(int score) async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- if (score > _score) {
- _getScore();
- await prefs.setInt('score', score);
- await prefs.commit();
- }
- }
-
- @override
- void dispose() {
- super.dispose();
- _timer.cancel();
- }
-}
+import 'package:flutter/material.dart';
+
+import 'About.dart';
+import 'Game.dart';
+import 'Menu.dart';
+import 'Help.dart';
+import 'Themes.dart';
+
+void main() => runApp(MyApp());
+
+class MyApp extends StatefulWidget {
+ // This widget is the root of your application.
+ @override
+ _MyAppState createState() => _MyAppState();
+}
+
+class _MyAppState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return FutureBuilder(
+ future: getTheme(),
+ builder: (BuildContext context, AsyncSnapshot snapshot) {
+ if (snapshot.hasData) {
+ return MaterialApp(
+ title: 'Four Fours',
+ debugShowCheckedModeBanner: false,
+ theme: themes[theme],
+ home: Menu(),
+ routes: {
+ 'Play': (BuildContext context) => GamePage(gameType: 1),
+ 'Arcade': (BuildContext context) => GamePage(gameType: 2),
+ 'Help': (BuildContext context) => Help(),
+ 'About': (BuildContext context) => About()
+ },
+ );
+ } else {
+ return Container();
+ }
+ },
+ );
+ }
+}
diff --git a/lib/storage.dart b/lib/storage.dart
deleted file mode 100644
index aacbc8e..0000000
--- a/lib/storage.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-String _generateKey
-(
-
-String id = 1,
- String
-key) {
-return "$id/$key";
-}
-
-@override
-void saveString(String userId, String key, int score) async {
- final prefs = await SharedPreferences.getInstance();
- await pres._setString("Highscore", score)
-}
\ No newline at end of file
diff --git a/lib/utils.dart b/lib/utils.dart
new file mode 100644
index 0000000..541b867
--- /dev/null
+++ b/lib/utils.dart
@@ -0,0 +1,50 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+import 'package:url_launcher/url_launcher.dart';
+
+int minTime = 4;
+
+Future launchSite(String url) async {
+ if (await canLaunch(url)) {
+ await launch(url);
+ } else {
+ throw "Cannot open URL";
+ }
+ return;
+}
+
+Widget newButton(String text, Function f, BuildContext context) {
+ return RaisedButton(
+ color: Theme.of(context).accentColor,
+ shape:
+ RoundedRectangleBorder(borderRadius: new BorderRadius.circular(18.0)),
+ onPressed: f,
+ child: Text(
+ "$text",
+ style: TextStyle(
+ fontSize: 24, color: Theme.of(context).textTheme.bodyText1.color),
+ ),
+ padding: EdgeInsets.all(15),
+ animationDuration: Duration(microseconds: 1),
+ );
+}
+
+Widget helpElement(String head, String content, BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.all(15.0),
+ child: Card(
+ elevation: 0.0,
+ color: Theme.of(context).backgroundColor,
+ child: ListTile(
+ title: Text(
+ "$head",
+ style: TextStyle(fontSize: 24),
+ ),
+ subtitle: Text(
+ "$content",
+ softWrap: true,
+ style: TextStyle(fontSize: 18),
+ ),
+ )),
+ );
+}
diff --git a/pubspec.lock b/pubspec.lock
index 880918d..c7fb000 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -7,56 +7,56 @@ packages:
name: archive
url: "https://pub.dartlang.org"
source: hosted
- version: "2.0.11"
+ version: "2.0.13"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
- version: "1.5.2"
+ version: "1.6.0"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
source: hosted
- version: "2.4.0"
+ version: "2.4.1"
audioplayers:
dependency: "direct main"
description:
name: audioplayers
url: "https://pub.dartlang.org"
source: hosted
- version: "0.13.1"
+ version: "0.15.1"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
- version: "1.0.5"
+ version: "2.0.0"
box2d_flame:
dependency: transitive
description:
name: box2d_flame
url: "https://pub.dartlang.org"
source: hosted
- version: "0.4.4"
+ version: "0.4.6"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.2"
+ version: "1.1.3"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
source: hosted
- version: "1.14.11"
+ version: "1.14.12"
convert:
dependency: transitive
description:
@@ -70,35 +70,42 @@ packages:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.3"
+ version: "2.1.4"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
- version: "0.1.2"
+ version: "0.1.3"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "5.2.0"
flame:
dependency: "direct main"
description:
name: flame
url: "https://pub.dartlang.org"
source: hosted
- version: "0.15.1"
+ version: "0.20.2"
flare_dart:
dependency: transitive
description:
name: flare_dart
url: "https://pub.dartlang.org"
source: hosted
- version: "1.4.4"
+ version: "2.3.4"
flare_flutter:
dependency: transitive
description:
name: flare_flutter
url: "https://pub.dartlang.org"
source: hosted
- version: "1.5.5"
+ version: "2.0.3"
flutter:
dependency: "direct main"
description: flutter
@@ -110,7 +117,7 @@ packages:
name: flutter_svg
url: "https://pub.dartlang.org"
source: hosted
- version: "0.14.0"
+ version: "0.17.4"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -127,7 +134,14 @@ packages:
name: image
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.4"
+ version: "2.1.12"
+ intl:
+ dependency: transitive
+ description:
+ name: intl
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.16.1"
matcher:
dependency: transitive
description:
@@ -148,7 +162,7 @@ packages:
name: ordered_set
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.2"
+ version: "2.0.0"
path:
dependency: transitive
description:
@@ -176,14 +190,28 @@ packages:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
- version: "1.2.0"
- pedantic:
+ version: "1.6.11"
+ path_provider_linux:
dependency: transitive
description:
- name: pedantic
+ name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.0+1"
+ version: "0.0.1+1"
+ path_provider_macos:
+ dependency: transitive
+ description:
+ name: path_provider_macos
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.0.4+3"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.2"
petitparser:
dependency: transitive
description:
@@ -191,41 +219,76 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.0"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.2.1"
+ platform_detect:
+ dependency: transitive
+ description:
+ name: platform_detect
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.4.0"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.2"
+ process:
+ dependency: transitive
+ description:
+ name: process
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.0.13"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.4.4"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.dartlang.org"
source: hosted
- version: "2.0.5"
+ version: "2.1.3"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
- version: "0.5.6"
+ version: "0.5.7+3"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
- version: "0.0.1+3"
+ version: "0.0.1+10"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.dartlang.org"
source: hosted
- version: "1.0.1"
+ version: "1.0.4"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
- version: "0.1.2+2"
+ version: "0.1.2+7"
sky_engine:
dependency: transitive
description: flutter
@@ -237,14 +300,7 @@ packages:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
- version: "1.5.5"
- splashscreen:
- dependency: "direct main"
- description:
- name: splashscreen
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.2.0"
+ version: "1.7.0"
stack_trace:
dependency: transitive
description:
@@ -272,7 +328,7 @@ packages:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.0+1"
+ version: "2.2.0"
term_glyph:
dependency: transitive
description:
@@ -286,7 +342,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
- version: "0.2.11"
+ version: "0.2.15"
tiled:
dependency: transitive
description:
@@ -301,13 +357,41 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.6"
+ url_launcher:
+ dependency: "direct main"
+ description:
+ name: url_launcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "5.4.11"
+ url_launcher_macos:
+ dependency: transitive
+ description:
+ name: url_launcher_macos
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.0.1+7"
+ url_launcher_platform_interface:
+ dependency: transitive
+ description:
+ name: url_launcher_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.7"
+ url_launcher_web:
+ dependency: transitive
+ description:
+ name: url_launcher_web
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.1+6"
uuid:
dependency: transitive
description:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
- version: "2.0.2"
+ version: "2.1.0"
vector_math:
dependency: transitive
description:
@@ -315,13 +399,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
+ xdg_directories:
+ dependency: transitive
+ description:
+ name: xdg_directories
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.0"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
- version: "3.5.0"
+ version: "3.6.1"
sdks:
- dart: ">=2.4.0 <3.0.0"
- flutter: ">=1.12.13+hotfix.4 <2.0.0"
+ dart: ">=2.6.0 <3.0.0"
+ flutter: ">=1.12.13+hotfix.5 <2.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index f3233b1..bc4528f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,80 +1,81 @@
-name: four
-description: Four fours game
-
-# The following defines the version and build number for your application.
-# A version number is three numbers separated by dots, like 1.2.43
-# followed by an optional build number separated by a +.
-# Both the version and the builder number may be overridden in flutter
-# build by specifying --build-name and --build-number, respectively.
-# In Android, build-name is used as versionName while build-number used as versionCode.
-# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
-# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
-# Read more about iOS versioning at
-# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 1.0.0+1
-
-environment:
- sdk: ">=2.1.0 <3.0.0"
-
-dependencies:
- audioplayers: ^0.13.0
- path_provider: ^1.1.0
- shared_preferences: ^0.5.6
- splashscreen: ^1.2.0
- flame: ^0.15.1
- flutter:
- sdk: flutter
-
- # The following adds the Cupertino Icons font to your application.
- # Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^0.1.2
-
-dev_dependencies:
- flutter_test:
- sdk: flutter
-
-
-# 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.
-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.
- uses-material-design: true
-
- # To add assets to your application, add an assets section, like this:
- # assets:
- # - images/a_dot_burr.jpeg
- # - images/a_dot_ham.jpeg
-
- # An image asset can refer to one or more resolution-specific "variants", see
- # https://flutter.dev/assets-and-images/#resolution-aware.
-
- # For details regarding adding assets from package dependencies, see
- # https://flutter.dev/assets-and-images/#from-packages
-
- # To add custom fonts to your application, add a fonts section here,
- # in this "flutter" section. Each entry in this list should have a
- # "family" key with the font family name, and a "fonts" key with a
- # list giving the asset and other descriptors for the font. For
- # example:
- # fonts:
- # - family: Schyler
- # fonts:
- # - asset: fonts/Schyler-Regular.ttf
- # - asset: fonts/Schyler-Italic.ttf
- # style: italic
- # - family: Trajan Pro
- # fonts:
- # - asset: fonts/TrajanPro.ttf
- # - asset: fonts/TrajanPro_Bold.ttf
- # weight: 700
- #
- # For details regarding fonts from package dependencies,
- # see https://flutter.dev/custom-fonts/#from-packages
- assets:
- - assets/audio/correct.mp3
- - assets/images/logo.gif
+name: four
+description: Four fours game
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.1.0 <3.0.0"
+
+dependencies:
+ audioplayers: ^0.15.1
+ path_provider: ^1.1.0
+ shared_preferences: ^0.5.6
+ flame: ^0.20.1
+ url_launcher: ^5.4.11
+ flutter:
+ sdk: flutter
+
+ # The following adds the Cupertino Icons font to your application.
+ # Use with the CupertinoIcons class for iOS style icons.
+ cupertino_icons: ^0.1.2
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+
+
+# 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.
+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.
+ uses-material-design: true
+
+ # To add assets to your application, add an assets section, like this:
+ # assets:
+ # - images/a_dot_burr.jpeg
+ # - images/a_dot_ham.jpeg
+
+ # An image asset can refer to one or more resolution-specific "variants", see
+ # https://flutter.dev/assets-and-images/#resolution-aware.
+
+ # For details regarding adding assets from package dependencies, see
+ # https://flutter.dev/assets-and-images/#from-packages
+
+ # To add custom fonts to your application, add a fonts section here,
+ # in this "flutter" section. Each entry in this list should have a
+ # "family" key with the font family name, and a "fonts" key with a
+ # list giving the asset and other descriptors for the font. For
+ # example:
+ # fonts:
+ # - family: Schyler
+ # fonts:
+ # - asset: fonts/Schyler-Regular.ttf
+ # - asset: fonts/Schyler-Italic.ttf
+ # style: italic
+ # - family: Trajan Pro
+ # fonts:
+ # - asset: fonts/TrajanPro.ttf
+ # - asset: fonts/TrajanPro_Bold.ttf
+ # weight: 700
+ #
+ # For details regarding fonts from package dependencies,
+ # see https://flutter.dev/custom-fonts/#from-packages
+ assets:
+ - assets/audio/correct.mp3
+ - assets/images/logo1.gif
+ - assets/images/logo1.png
diff --git a/test/widget_test.dart b/test/widget_test.dart
index ac0c21b..6083cca 100644
--- a/test/widget_test.dart
+++ b/test/widget_test.dart
@@ -1,30 +1,30 @@
-// This is a basic Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility that Flutter provides. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:four/main.dart';
-
-void main() {
- testWidgets('Counter increments smoke test', (WidgetTester tester) async {
- // Build our app and trigger a frame.
- await tester.pumpWidget(MyApp());
-
- // Verify that our counter starts at 0.
- expect(find.text('0'), findsOneWidget);
- expect(find.text('1'), findsNothing);
-
- // Tap the '+' icon and trigger a frame.
- await tester.tap(find.byIcon(Icons.add));
- await tester.pump();
-
- // Verify that our counter has incremented.
- expect(find.text('0'), findsNothing);
- expect(find.text('1'), findsOneWidget);
- });
-}
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility that Flutter provides. For example, you can send tap and scroll
+// gestures. You can also use WidgetTester to find child widgets in the widget
+// tree, read text, and verify that the values of widget properties are correct.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:four/main.dart';
+
+void main() {
+ testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+ // Build our app and trigger a frame.
+ await tester.pumpWidget(MyApp());
+
+ // Verify that our counter starts at 0.
+ expect(find.text('0'), findsOneWidget);
+ expect(find.text('1'), findsNothing);
+
+ // Tap the '+' icon and trigger a frame.
+ await tester.tap(find.byIcon(Icons.add));
+ await tester.pump();
+
+ // Verify that our counter has incremented.
+ expect(find.text('0'), findsNothing);
+ expect(find.text('1'), findsOneWidget);
+ });
+}