diff --git a/team#18/cmms/.gitignore b/team#18/cmms/.gitignore new file mode 100644 index 00000000..2ddde2a5 --- /dev/null +++ b/team#18/cmms/.gitignore @@ -0,0 +1,73 @@ +# 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/Flutter/flutter_export_environment.sh +**/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/team#18/cmms/.metadata b/team#18/cmms/.metadata new file mode 100644 index 00000000..aeb01ee2 --- /dev/null +++ b/team#18/cmms/.metadata @@ -0,0 +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: 2d2a1ffec95cc70a3218872a2cd3f8de4933c42f + channel: stable + +project_type: app diff --git a/team#18/cmms/README.md b/team#18/cmms/README.md new file mode 100644 index 00000000..8c4296e1 --- /dev/null +++ b/team#18/cmms/README.md @@ -0,0 +1,16 @@ +# cmms + +A new Flutter project. + +## 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/team#18/cmms/android/.project b/team#18/cmms/android/.project new file mode 100644 index 00000000..3964dd3f --- /dev/null +++ b/team#18/cmms/android/.project @@ -0,0 +1,17 @@ + + + android + Project android created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/team#18/cmms/android/.settings/org.eclipse.buildship.core.prefs b/team#18/cmms/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..e8895216 --- /dev/null +++ b/team#18/cmms/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/team#18/cmms/android/app/build.gradle b/team#18/cmms/android/app/build.gradle new file mode 100644 index 00000000..d92d0f6b --- /dev/null +++ b/team#18/cmms/android/app/build.gradle @@ -0,0 +1,73 @@ +apply plugin: 'com.android.application' +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 "com.nahiapata.cmms" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + multiDexEnabled true + } + + 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" + implementation 'com.google.firebase:firebase-analytics:17.2.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test:runner:1.1.1' + implementation 'androidx.core:core:1.0.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'com.google.firebase:firebase-auth:19.1.0' +} +apply plugin: 'com.google.gms.google-services' diff --git a/team#18/cmms/android/app/google-services.json b/team#18/cmms/android/app/google-services.json new file mode 100644 index 00000000..f14996cc --- /dev/null +++ b/team#18/cmms/android/app/google-services.json @@ -0,0 +1,48 @@ +{ + "project_info": { + "project_number": "507519612700", + "firebase_url": "https://mandi-system.firebaseio.com", + "project_id": "mandi-system", + "storage_bucket": "mandi-system.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:507519612700:android:4ac811447b3c81fadbecd9", + "android_client_info": { + "package_name": "com.nahiapata.cmms" + } + }, + "oauth_client": [ + { + "client_id": "507519612700-l781kc2i4011psjhv2uklo776jcq4e24.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.nahiapata.cmms", + "certificate_hash": "98dcdffc49c5ebbf334b6968a3de554990b46f86" + } + }, + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyD_RmUkxHoSkP1EhzyFprrTao4--wFy6io" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/team#18/cmms/android/app/src/debug/AndroidManifest.xml b/team#18/cmms/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..34128f91 --- /dev/null +++ b/team#18/cmms/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/team#18/cmms/android/app/src/main/AndroidManifest.xml b/team#18/cmms/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..a9218a51 --- /dev/null +++ b/team#18/cmms/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + diff --git a/team#18/cmms/android/app/src/main/kotlin/com/nahiapata/cmms/MainActivity.kt b/team#18/cmms/android/app/src/main/kotlin/com/nahiapata/cmms/MainActivity.kt new file mode 100644 index 00000000..1664fe43 --- /dev/null +++ b/team#18/cmms/android/app/src/main/kotlin/com/nahiapata/cmms/MainActivity.kt @@ -0,0 +1,13 @@ +package com.nahiapata.cmms + +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/team#18/cmms/android/app/src/main/res/drawable/launch_background.xml b/team#18/cmms/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/team#18/cmms/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/team#18/cmms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/team#18/cmms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..db77bb4b Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/team#18/cmms/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 00000000..12a389cc Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/team#18/cmms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..17987b79 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/team#18/cmms/android/app/src/main/res/mipmap-mdpi/launcher_icon.png new file mode 100644 index 00000000..41a31da0 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..09d43914 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 00000000..f0c0df41 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..d5f1c8d3 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 00000000..262f31a0 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..4d6372ee Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 00000000..3b9eda54 Binary files /dev/null and b/team#18/cmms/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ diff --git a/team#18/cmms/android/app/src/main/res/values/styles.xml b/team#18/cmms/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..00fa4417 --- /dev/null +++ b/team#18/cmms/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/team#18/cmms/android/app/src/profile/AndroidManifest.xml b/team#18/cmms/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..34128f91 --- /dev/null +++ b/team#18/cmms/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/team#18/cmms/android/build.gradle b/team#18/cmms/android/build.gradle new file mode 100644 index 00000000..dbb2cfd2 --- /dev/null +++ b/team#18/cmms/android/build.gradle @@ -0,0 +1,32 @@ +buildscript { + ext.kotlin_version = '1.3.0' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.3.2' + } +} + +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/team#18/cmms/android/gradle.properties b/team#18/cmms/android/gradle.properties new file mode 100644 index 00000000..755300e3 --- /dev/null +++ b/team#18/cmms/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M + +android.useAndroidX=true +android.enableJetifier=true diff --git a/team#18/cmms/android/gradle/wrapper/gradle-wrapper.properties b/team#18/cmms/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..2819f022 --- /dev/null +++ b/team#18/cmms/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +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 diff --git a/team#18/cmms/android/settings.gradle b/team#18/cmms/android/settings.gradle new file mode 100644 index 00000000..5a2f14fb --- /dev/null +++ b/team#18/cmms/android/settings.gradle @@ -0,0 +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 +} diff --git a/team#18/cmms/assets/images/Image-7.png b/team#18/cmms/assets/images/Image-7.png new file mode 100644 index 00000000..20ab871d Binary files /dev/null and b/team#18/cmms/assets/images/Image-7.png differ diff --git a/team#18/cmms/assets/images/ficon.jpeg b/team#18/cmms/assets/images/ficon.jpeg new file mode 100644 index 00000000..c72c9c30 Binary files /dev/null and b/team#18/cmms/assets/images/ficon.jpeg differ diff --git a/team#18/cmms/assets/images/finalogo.jpg b/team#18/cmms/assets/images/finalogo.jpg new file mode 100644 index 00000000..56cab265 Binary files /dev/null and b/team#18/cmms/assets/images/finalogo.jpg differ diff --git a/team#18/cmms/assets/images/finalogo1.jpg b/team#18/cmms/assets/images/finalogo1.jpg new file mode 100644 index 00000000..1b40f23a Binary files /dev/null and b/team#18/cmms/assets/images/finalogo1.jpg differ diff --git a/team#18/cmms/assets/images/logo.png b/team#18/cmms/assets/images/logo.png new file mode 100644 index 00000000..58a7c5c5 Binary files /dev/null and b/team#18/cmms/assets/images/logo.png differ diff --git a/team#18/cmms/assets/images/ticon.png b/team#18/cmms/assets/images/ticon.png new file mode 100644 index 00000000..1f9d804c Binary files /dev/null and b/team#18/cmms/assets/images/ticon.png differ diff --git a/team#18/cmms/assets/images/wheat.png b/team#18/cmms/assets/images/wheat.png new file mode 100644 index 00000000..0c23110a Binary files /dev/null and b/team#18/cmms/assets/images/wheat.png differ diff --git a/team#18/cmms/assets/something.json b/team#18/cmms/assets/something.json new file mode 100644 index 00000000..b1159496 --- /dev/null +++ b/team#18/cmms/assets/something.json @@ -0,0 +1,40 @@ +{ + "mandisList": ["sundar", "pichai"], + "mandis": [{ + "district": "gandhinagar", + "name": "sundar", + "trader": 6, + "commodities": [{ + "name": "corn", + "price_modal": 655, + "price_min": 500, + "demand": 100, + "supply": 100, + + "price_max": 800 + }, { + "name": "potato", + "price_modal": 73, + "price_min": 50, + "demand": 600, + "supply": 700, + "price_max": 80 + }], + "farmer": 50, + "state": "GJ" + }, { + "commodity": [{ + "name": "chilli", + "price_modal": 56, + "price_min": 50, + "demand": 10, + "supply": 8, + "price_max": 80 + }], + "district": "gandhinagar", + "name": "pichai", + "trader": 2, + "farmer": 10, + "state": "GJ" + }] +} \ No newline at end of file diff --git a/team#18/cmms/assets/something2.json b/team#18/cmms/assets/something2.json new file mode 100644 index 00000000..c21fb25c --- /dev/null +++ b/team#18/cmms/assets/something2.json @@ -0,0 +1,39 @@ +{ + mandisList: [sundar, pichai], + mandis: [{ + district: gandhinagar, + name: sundar, + trader: 6, + commodities: [{ + name: corn, + price_modal: 655, + price_min: 500, + demand: 100, + supply: 100, + price_max: 800 + }, { + name: potato, + price_modal: 73, + price_min: 50, + demand: 600, + supply: 700, + price_max: 80 + }], + farmer: 50, + state: GJ + }, { + commodity: [{ + name: chilli, + price_modal: 56, + price_min: 50, + demand: 10, + supply: 8, + price_max: 80 + }], + district: gandhinagar, + name: pichai, + trader: 2, + farmer: 10, + state: GJ + }] +} \ No newline at end of file diff --git a/team#18/cmms/ios/Flutter/AppFrameworkInfo.plist b/team#18/cmms/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..6b4c0f78 --- /dev/null +++ b/team#18/cmms/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +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 + + diff --git a/team#18/cmms/ios/Flutter/Debug.xcconfig b/team#18/cmms/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/team#18/cmms/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/team#18/cmms/ios/Flutter/Release.xcconfig b/team#18/cmms/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/team#18/cmms/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/team#18/cmms/ios/Runner.xcodeproj/project.pbxproj b/team#18/cmms/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..0934bbea --- /dev/null +++ b/team#18/cmms/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,519 @@ +// !$*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; + 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 = com.nahiapata.cmms; + 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 = com.nahiapata.cmms; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + 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 = com.nahiapata.cmms; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + 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/team#18/cmms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/team#18/cmms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/team#18/cmms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/team#18/cmms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/team#18/cmms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..a28140cf --- /dev/null +++ b/team#18/cmms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/cmms/ios/Runner.xcworkspace/contents.xcworkspacedata b/team#18/cmms/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/team#18/cmms/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/team#18/cmms/ios/Runner/AppDelegate.swift b/team#18/cmms/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/team#18/cmms/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +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" + } +} diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 00000000..64ad52dc Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 00000000..c54b6647 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 00000000..d4ab65cf Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 00000000..c46c319f Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 00000000..5f60914a Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 00000000..c0ad5298 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 00000000..e94d992d Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 00000000..d4ab65cf Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 00000000..9cc72021 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 00000000..98ded619 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 00000000..98ded619 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 00000000..f13f1f86 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 00000000..a5a6897a Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 00000000..50ed4341 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 00000000..6d80a320 Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +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" + } +} diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/team#18/cmms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# 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/team#18/cmms/ios/Runner/Base.lproj/LaunchScreen.storyboard b/team#18/cmms/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/team#18/cmms/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/cmms/ios/Runner/Base.lproj/Main.storyboard b/team#18/cmms/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/team#18/cmms/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/cmms/ios/Runner/Info.plist b/team#18/cmms/ios/Runner/Info.plist new file mode 100644 index 00000000..f0fade18 --- /dev/null +++ b/team#18/cmms/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + cmms + 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/team#18/cmms/ios/Runner/Runner-Bridging-Header.h b/team#18/cmms/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..7335fdf9 --- /dev/null +++ b/team#18/cmms/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/team#18/cmms/lib/main.dart b/team#18/cmms/lib/main.dart new file mode 100644 index 00000000..964c4e33 --- /dev/null +++ b/team#18/cmms/lib/main.dart @@ -0,0 +1,20 @@ +import 'package:cmms/utils/Mandi.dart'; +import 'package:cmms/utils/tools.dart'; +import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +void main() async { + Mandi.pref = await SharedPreferences.getInstance(); + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + home: Tools.signInHandler(), + theme: ThemeData(buttonColor: Colors.green, primarySwatch: Colors.green), + ); + } +} diff --git a/team#18/cmms/lib/models/commodities.dart b/team#18/cmms/lib/models/commodities.dart new file mode 100644 index 00000000..45cf040c --- /dev/null +++ b/team#18/cmms/lib/models/commodities.dart @@ -0,0 +1,8 @@ +class Commodities { + int supply; + int demand; + String name; + int price_min; + int price_max; + int price_modal; +} diff --git a/team#18/cmms/lib/models/farmer.dart b/team#18/cmms/lib/models/farmer.dart new file mode 100644 index 00000000..e8d3f3fd --- /dev/null +++ b/team#18/cmms/lib/models/farmer.dart @@ -0,0 +1,5 @@ +import 'package:cmms/models/user.dart'; + +class Farmer { + User farmer = new User(); +} diff --git a/team#18/cmms/lib/models/location.dart b/team#18/cmms/lib/models/location.dart new file mode 100644 index 00000000..71a34db6 --- /dev/null +++ b/team#18/cmms/lib/models/location.dart @@ -0,0 +1,31 @@ +import 'package:flutter/widgets.dart'; + +class Mandis { + String mandis; + Mandis({@required this.mandis}); +} + +class Districts { + List districts; + String district; + Districts({ + @required this.districts, + @required this.district, + }); +} + +class States { + List states; + String state; + States({ + @required this.states, + @required this.state, + }); +} + +class Locations { + List locations; + Locations({ + @required this.locations, + }); +} diff --git a/team#18/cmms/lib/models/mandi.dart b/team#18/cmms/lib/models/mandi.dart new file mode 100644 index 00000000..397b7ebf --- /dev/null +++ b/team#18/cmms/lib/models/mandi.dart @@ -0,0 +1,116 @@ +// To parse this JSON data, do +// +// final mandi = mandiFromJson(jsonString); + +import 'dart:convert'; + +Mandi mandiFromJson(String str) => Mandi.fromJson(json.decode(str)); + +String mandiToJson(Mandi data) => json.encode(data.toJson()); + +class Mandi { + List mandisList; + List mandis; + + Mandi({ + this.mandisList, + this.mandis, + }); + + factory Mandi.fromJson(Map json) => Mandi( + mandisList: List.from(json["mandisList"].map((x) => x)), + mandis: List.from( + json["mandis"].map((x) => MandiElement.fromJson(x))), + ); + + Map toJson() => { + "mandisList": List.from(mandisList.map((x) => x)), + "mandis": List.from(mandis.map((x) => x.toJson())), + }; +} + +class MandiElement { + String district; + String name; + int trader; + List commodities; + int farmer; + String state; + List commodity; + + MandiElement({ + this.district, + this.name, + this.trader, + this.commodities, + this.farmer, + this.state, + this.commodity, + }); + + factory MandiElement.fromJson(Map json) => MandiElement( + district: json["district"], + name: json["name"], + trader: json["trader"], + commodities: json["commodities"] == null + ? null + : List.from( + json["commodities"].map((x) => Commodity.fromJson(x))), + farmer: json["farmer"], + state: json["state"], + commodity: json["commodity"] == null + ? null + : List.from( + json["commodity"].map((x) => Commodity.fromJson(x))), + ); + + Map toJson() => { + "district": district, + "name": name, + "trader": trader, + "commodities": commodities == null + ? null + : List.from(commodities.map((x) => x.toJson())), + "farmer": farmer, + "state": state, + "commodity": commodity == null + ? null + : List.from(commodity.map((x) => x.toJson())), + }; +} + +class Commodity { + String name; + int priceModal; + int priceMin; + int demand; + int supply; + int priceMax; + + Commodity({ + this.name, + this.priceModal, + this.priceMin, + this.demand, + this.supply, + this.priceMax, + }); + + factory Commodity.fromJson(Map json) => Commodity( + name: json["name"], + priceModal: json["price_modal"], + priceMin: json["price_min"], + demand: json["demand"], + supply: json["supply"], + priceMax: json["price_max"], + ); + + Map toJson() => { + "name": name, + "price_modal": priceModal, + "price_min": priceMin, + "demand": demand, + "supply": supply, + "price_max": priceMax, + }; +} diff --git a/team#18/cmms/lib/models/trader.dart b/team#18/cmms/lib/models/trader.dart new file mode 100644 index 00000000..16349ea0 --- /dev/null +++ b/team#18/cmms/lib/models/trader.dart @@ -0,0 +1,5 @@ +import 'package:cmms/models/user.dart'; + +class Trader { + User trader = new User(); +} diff --git a/team#18/cmms/lib/models/user.dart b/team#18/cmms/lib/models/user.dart new file mode 100644 index 00000000..7c60b67f --- /dev/null +++ b/team#18/cmms/lib/models/user.dart @@ -0,0 +1,12 @@ +import 'package:cmms/models/location.dart'; + +class User { + User() { + this.isAdmin = false; + } + bool isAdmin; + String uid; + int phone; + String name; + // Location location = new Location(); +} diff --git a/team#18/cmms/lib/models/userCom.dart b/team#18/cmms/lib/models/userCom.dart new file mode 100644 index 00000000..d6c3a5d1 --- /dev/null +++ b/team#18/cmms/lib/models/userCom.dart @@ -0,0 +1,5 @@ +class UserCom { + int stock; + String name; + int price; +} diff --git a/team#18/cmms/lib/pages/farmerRegistration.dart b/team#18/cmms/lib/pages/farmerRegistration.dart new file mode 100644 index 00000000..ff59e073 --- /dev/null +++ b/team#18/cmms/lib/pages/farmerRegistration.dart @@ -0,0 +1,219 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cmms/utils/Mandi.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:fluttertoast/fluttertoast.dart'; + +class FarmerForm extends StatefulWidget { + @override + _FarmerFormState createState() => _FarmerFormState(); +} + +class _FarmerFormState extends State { + final GlobalKey _formKey = new GlobalKey(); + TextEditingController _nameController = TextEditingController(); + TextEditingController _phoneController = TextEditingController(); + + FirebaseAuth _auth; + FirebaseUser user; + UserUpdateInfo userInfo; + + List _states = ['', 'GJ', 'MP', 'UP', 'JK']; + String _state = ''; + List _districts = [ + '', + 'gandhinagar', + 'himmatnagar', + 'ahmedabad', + ]; + String _district = ''; + + @override + void initState() { + _auth = FirebaseAuth.instance; + userInfo = UserUpdateInfo(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return new MandiScaffold( + isClickable: false, + title: "Registration Form", + body: new Container( + child: new Form( + key: _formKey, + autovalidate: true, + child: new ListView( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + children: [ + new TextFormField( + controller: _nameController, + decoration: const InputDecoration( + icon: const Icon(Icons.person), + hintText: 'Enter your full name', + labelText: 'Name', + ), + ), + new TextFormField( + controller: _phoneController, + decoration: const InputDecoration( + icon: const Icon(Icons.phone), + hintText: 'Enter your phone number', + labelText: 'Phone', + ), + keyboardType: TextInputType.phone, + inputFormatters: [ + WhitelistingTextInputFormatter.digitsOnly, + ], + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'State', + ), + isEmpty: _state == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _state, + isDense: true, + onChanged: (String newValue) { + setState(() { + _state = newValue; + state.didChange(newValue); + }); + }, + items: _states.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'District', + ), + isEmpty: _district == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _district, + isDense: true, + onChanged: (String newValue) { + setState( + () { + _district = newValue; + state.didChange(newValue); + }, + ); + }, + items: _districts.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new Container( + margin: new EdgeInsets.fromLTRB(0, 60, 0, 0), + child: MaterialButton( + child: Text( + "Register", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () async { + await _auth.verifyPhoneNumber( + phoneNumber: "+91" + _phoneController.text, + codeSent: (String verficationID, + [int resendcodeTimeout]) { + print("Code Sent to device"); + }, + timeout: Duration(seconds: 30), + verificationFailed: (AuthException exception) { + print("Verification Failed: $exception"); + Fluttertoast.showToast( + msg: "Verification Failed", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }, + verificationCompleted: + (AuthCredential credentials) async { + print("Phone Verification Complete"); + await _auth + .signInWithCredential(credentials) + .then((user) { + // Navigator.of(context).pop(); + Fluttertoast.showToast( + msg: "Succesfully Registered", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }); + print("user: $user"); + await Mandi.pref + .setString(Mandi.namePref, _nameController.text); + await Mandi.pref + .setString(Mandi.phonePref, _phoneController.text); + await Mandi.pref.setString(Mandi.statePref, _state); + await Mandi.pref + .setString(Mandi.districtPref, _district); + + await Firestore.instance + .collection("farmers") + .document(_phoneController.text) + .setData({ + "phone": _phoneController.text, + "name": _nameController.text, + "location": { + "district": _district, + "state": _state, + } + }); + }, + codeAutoRetrievalTimeout: (String verificaionID) { + print("Timed out"); + Fluttertoast.showToast( + msg: "Timed out. Try again", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }, + ); + }, + ), + ), + ], + ), + ), + ), + ); + } + + Future _verifyPhoneNumber() async {} +} diff --git a/team#18/cmms/lib/pages/homepage.dart b/team#18/cmms/lib/pages/homepage.dart new file mode 100644 index 00000000..e9a5bb23 --- /dev/null +++ b/team#18/cmms/lib/pages/homepage.dart @@ -0,0 +1,299 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cmms/pages/mandiDetails.dart'; +import 'package:cmms/utils/Mandi.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; +import 'package:flutter/services.dart'; +import 'package:barcode_scan/barcode_scan.dart'; + +class HomePage extends StatefulWidget { + final FirebaseUser user; + + HomePage({@required this.user}); + + @override + _HomePageState createState() => _HomePageState(); +} + +class _HomePageState extends State { + String id; + + Future _scanqr() async { + try { + String result = await BarcodeScanner.scan(); + setState(() { + id = result; + print("-------------------------------"); + print(id); + print("-------------------------------"); + }); + await Firestore.instance + .collection("farmers") + .document(Mandi.pref.getString(Mandi.phonePref)) + .collection("history") + .document() + .updateData({}); + } on PlatformException catch (e) { + if (e.code == BarcodeScanner.CameraAccessDenied) { + setState(() { + id = "camera permission denied"; + }); + } else { + setState(() { + id = "an error occured $e"; + }); + } + } on FormatException { + setState(() { + id = " back button pressed"; + }); + } catch (e) { + setState(() { + id = "an error occured $e"; + }); + } + } + + List statesList; + List districtList = ["ahmedabad", "gandhinagar", "himmatnagar"]; + List mandiList; + List commodityList; + + String stateValue = "GJ"; + String districtValue = "gandhinagar"; + + String commodityValue = "tomato"; + + Future _statesFuture; + final GlobalKey _formKey = new GlobalKey(); + + List availableMandis; + + @override + void initState() { + super.initState(); + _statesFuture = + Firestore.instance.collection("states").document("data").get(); + } + + @override + Widget build(BuildContext context) { + return MandiScaffold( + floatingButton: new FloatingActionButton.extended( + icon: Icon(Icons.camera), + label: Text("Scan me"), + onPressed: _scanqr, + tooltip: "scan code", + ), + isClickable: true, + title: "Home Page", + body: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: MediaQuery.of(context).size.height * 0.3, + child: FutureBuilder( + future: _statesFuture, + builder: (BuildContext context, + AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting || + snapshot.connectionState == ConnectionState.none) { + return Center( + child: SpinKitWanderingCubes( + color: Colors.red, + ), + ); + } else { + if (snapshot.hasError) { + return Center( + child: Text("Error Occured: ${snapshot.error}"), + ); + } else { + statesList = List(snapshot.data.data["states"].length); + districtList = + List(snapshot.data.data["GJ"].length); + mandiList = List(30); + commodityList = + List(snapshot.data.data["commodities"].length); + + for (int i = 0; + i < snapshot.data.data["states"].length; + i++) { + statesList[i] = snapshot.data.data["states"][i]; + } + + for (int i = 0; + i < snapshot.data.data["commodities"].length; + i++) { + commodityList[i] = snapshot.data.data["commodities"][i]; + } + + for (int i = 0; i < snapshot.data.data["GJ"].length; i++) { + districtList[i] = snapshot.data.data["GJ"][i]; + } + + return Form( + key: _formKey, + autovalidate: true, + child: new ListView( + children: [ + Card( + elevation: 5, + child: new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'State', + ), + isEmpty: stateValue == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: stateValue, + isDense: true, + onChanged: (String newValue) { + for (int i = 0; + i < + snapshot + .data.data[newValue].length; + i++) { + districtList[i] = + snapshot.data.data[newValue][i]; + } + setState(() { + stateValue = newValue; + state.didChange(newValue); + }); + }, + items: statesList.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + ), + Card( + elevation: 5, + child: new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'Districts', + ), + isEmpty: districtValue == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: districtValue, + isDense: true, + onChanged: (String newValue) { + setState(() { + districtValue = newValue; + state.didChange(newValue); + }); + }, + items: districtList.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + ), + ], + ), + ); + } + } + }, + ), + ), + Expanded( + child: StreamBuilder( + stream: Firestore.instance + .collection("mandi") + .document(stateValue + "-" + districtValue) + .collection("sundar") + .document("data") + .collection("commodities") + .snapshots(), + builder: (BuildContext context, + AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.none || + snapshot.connectionState == ConnectionState.waiting) { + return Center( + child: SpinKitWanderingCubes( + color: Colors.red, + ), + ); + } else { + if (snapshot.hasError) { + return Center( + child: Text("Error"), + ); + } else { + print("Accessing ${stateValue + "-" + districtValue}"); + print("${snapshot.data.documents}"); + List listTile = List(); + for (int i = 0; i < snapshot.data.documents.length; i++) { + listTile.add( + Card( + elevation: 4, + child: ListTile( + leading: SizedBox( + width: 60, + child: Text( + "${snapshot.data.documents[i].data["name"]}", + textScaleFactor: 1.2, + style: TextStyle(fontWeight: FontWeight.w700), + ), + ), + title: Text( + "Demand: ${snapshot.data.documents[i].data["demand"]}"), + subtitle: Text( + "Supply: ${snapshot.data.documents[i].data["supply"]}"), + trailing: Text( + "Price per Q ${snapshot.data.documents[i].data["price"]}"), + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) { + return MandiDetails( + docName: stateValue + "-" + districtValue, + i: i, + snapshot: snapshot, + user: widget.user, + ); + }, + ), + ); + }, + ), + ), + ); + } + return Column( + children: listTile, + ); + } + } + }, + ), + ), + ], + ), + ); + } +} diff --git a/team#18/cmms/lib/pages/homepage2.dart b/team#18/cmms/lib/pages/homepage2.dart new file mode 100644 index 00000000..c0db865c --- /dev/null +++ b/team#18/cmms/lib/pages/homepage2.dart @@ -0,0 +1,170 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; + +class HomePage extends StatefulWidget { + final FirebaseUser user; + + HomePage({@required this.user}); + + @override + _HomePageState createState() => _HomePageState(); +} + +class _HomePageState extends State { + List statesList = ["GJ"]; + List districtList = ["ahmedabad", "gandhinagar", "himmatnagar"]; + List mandiList = ["sundar", "prayagraj"]; + + String stateValue = "GJ"; + String districtValue = "gandhinagar"; + String mandiValue = "prayagraj"; + String commodityValue = "jute"; + + Future _mandiFuture; + Future _statesFuture; + + @override + void initState() { + super.initState(); + _mandiFuture = Firestore.instance.collection("mandi").getDocuments(); + _statesFuture = Firestore.instance.collection("states").getDocuments(); + } + + @override + Widget build(BuildContext context) { + return MandiScaffold( + isClickable: true, + title: "Home Page", + body: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: MediaQuery.of(context).size.height * 0.4, + child: FutureBuilder( + future: _statesFuture, + builder: (BuildContext context, + AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting || + snapshot.connectionState == ConnectionState.none) { + return Center( + child: SpinKitWanderingCubes( + color: Colors.red, + ), + ); + } else { + if (snapshot.hasError) { + return Center( + child: Text("Error Occured: ${snapshot.error}"), + ); + } else { + // //this is where the magic happens + // statesList = List(snapshot.data.documents.length); + // for (int i = 0; i < snapshot.data.documents.length; i++) { + // statesList[i] = snapshot.data.documents[i].documentID; + // } + // print(statesList); + // // print(snapshot.data.documents.length); + // // locations = Locations(); + // print(snapshot.data.documents[0].data.length); + // print(snapshot.data.documents[0].data.keys.toList()[0]); + // districtList + // .addAll(snapshot.data.documents[0].data.keys.toList()); + // print(districtList); + // // for (int i = 0; + // // i < snapshot.data.documents[0].data.length; + // // i++) { + // // } + + return Container(); + } + } + }, + ), + ), + Expanded( + child: SingleChildScrollView( + child: StreamBuilder( + stream: Firestore.instance + .collection("mandi") + .document( + stateValue + "-" + districtValue + "-" + mandiValue) + .collection("commodities") + .document(commodityValue) + .snapshots(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.none || + snapshot.connectionState == ConnectionState.waiting) { + return Center( + child: SpinKitWanderingCubes( + color: Colors.red, + ), + ); + } else { + if (snapshot.hasError) { + return Center( + child: Text("Error"), + ); + } else { + print("Accessing document: " + + stateValue + + "-" + + districtValue + + "-" + + mandiValue); + print(snapshot.data["name"]); + return Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: giveListTiles(), + ); + } + } + }, + ), + ), + ), + ], + ), + ); + } + + List giveListTiles() {} + + List completetable(AsyncSnapshot snapshot) { + List row = List(); + row.add(tableHeader()); + for (int i = 0; i < 2; i++) { + // row.add(tableElements(snapshot)); + } + return row; + } + + TableRow tableHeader() { + return TableRow( + children: [ + Text("Mandi"), + Text("Commodity"), + Text("Price"), + Text("Supply"), + Text("Demand"), + ], + ); + } + + TableRow tableElements(AsyncSnapshot snapshot) { + // print(snapshot.data.documentID); + return TableRow( + children: [ + Text("sundar"), + Text("${snapshot.data["name"]}"), + Text("${snapshot.data["price_modal"]}"), + Text("${snapshot.data["supply"]}"), + Text("${snapshot.data["demand"]}"), + ], + ); + } +} diff --git a/team#18/cmms/lib/pages/mandiConfirmation.dart b/team#18/cmms/lib/pages/mandiConfirmation.dart new file mode 100644 index 00000000..e69de29b diff --git a/team#18/cmms/lib/pages/mandiDetails.dart b/team#18/cmms/lib/pages/mandiDetails.dart new file mode 100644 index 00000000..83cdfb30 --- /dev/null +++ b/team#18/cmms/lib/pages/mandiDetails.dart @@ -0,0 +1,177 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cmms/utils/Mandi.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class MandiDetails extends StatefulWidget { + final FirebaseUser user; + final AsyncSnapshot snapshot; + final int i; + final String docName; + MandiDetails({ + @required this.docName, + @required this.user, + @required this.snapshot, + @required this.i, + }); + + @override + _MandiDetailsState createState() => _MandiDetailsState(); +} + +class _MandiDetailsState extends State { + TextEditingController _amountController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return MandiScaffold( + title: "Real Time Details", + isClickable: true, + user: widget.user, + body: SingleChildScrollView( + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 40, + ), + showCard("name"), + SizedBox( + height: 30, + ), + Wrap( + runSpacing: 15, + spacing: 15, + children: [ + showCard("demand"), + showCard("supply"), + showCard("farmers"), + showCard("traders"), + showCard("price"), + showCard("mandi"), + ], + ), + SizedBox( + height: 40, + ), + MaterialButton( + child: Text( + "Book my Slot", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + return showDialog( + context: context, + barrierDismissible: true, + builder: (BuildContext context) { + return AlertDialog( + title: Text( + "Enter Amount of ${widget.snapshot.data.documents[widget.i].data["name"]} you are bringing: "), + content: TextFormField( + controller: _amountController, + inputFormatters: [ + WhitelistingTextInputFormatter.digitsOnly, + ], + onChanged: (value) {}, + ), + actions: [ + FlatButton( + child: Text("OK"), + onPressed: () async { + await Firestore.instance + .collection("farmers") + .document( + Mandi.pref.getString(Mandi.phonePref)) + .setData( + { + "isEligible": false, + }, + merge: true, + ); + await Firestore.instance + .collection("farmers") + .document( + Mandi.pref.getString(Mandi.phonePref)) + .collection("history") + .document(DateTime.now() + .millisecondsSinceEpoch + .toString()) + .setData({ + "commodity": widget.snapshot.data + .documents[widget.i].data["name"], + "quantity": _amountController.text, + "time": DateTime.now().millisecondsSinceEpoch, + }); + + await Firestore.instance + .collection("mandi") + .document(widget.docName) + .collection("sundar") + .document("data") + .collection("commodities") + .document(widget.snapshot.data + .documents[widget.i].data["name"]) + .updateData({ + "supply": FieldValue.increment( + int.parse(_amountController.text)), + "farmers": FieldValue.increment(1), + }); + Navigator.of(context).pop(); + }, + ), + FlatButton( + child: Text("Cancel"), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); + }, + ), + ], + ), + ), + ), + ); + } + + Widget showCard(String parameter) { + return SizedBox( + height: 100, + width: 160, + child: Card( + elevation: 7, + child: ListTile( + title: Text( + "${widget.snapshot.data.documents[widget.i].data[parameter]}", + style: TextStyle( + fontSize: 24, + ), + textAlign: TextAlign.center, + ), + subtitle: Text( + parameter, + textAlign: TextAlign.center, + ), + ), + ), + ); + } +} diff --git a/team#18/cmms/lib/pages/mandiStat.dart b/team#18/cmms/lib/pages/mandiStat.dart new file mode 100644 index 00000000..e69de29b diff --git a/team#18/cmms/lib/pages/profile.dart b/team#18/cmms/lib/pages/profile.dart new file mode 100644 index 00000000..b3ae2bb9 --- /dev/null +++ b/team#18/cmms/lib/pages/profile.dart @@ -0,0 +1,144 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; + +class Profile extends StatefulWidget { + final FirebaseUser user; + + Profile({@required this.user}); + + @override + _ProfileState createState() => _ProfileState(); +} + +class _ProfileState extends State { + @override + Widget build(BuildContext context) { + // var document = await Firestore.instance.collection("farmers").document(widget.user.phoneNumber).get(); + // String name,phone,district,state; + // name=document.data["name"] + print("========================================="); + // print(widget.user.phoneNumber); + + return Scaffold( + appBar: AppBar( + title: Text("Your Profile"), + leading: Padding( + padding: const EdgeInsets.all(10.0), + child: CircleAvatar( + backgroundImage: AssetImage("assets/images/wheat.png"), + ), + ), + ), + body: FutureBuilder( + future: Firestore.instance.collection("farmers").document("an").get(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting || + snapshot.connectionState == ConnectionState.none) { + return Center( + child: SpinKitWanderingCubes( + color: Colors.red, + ), + ); + } else { + if (snapshot.hasError) { + return Center( + child: Text("Error occured"), + ); + } else { + return SingleChildScrollView( + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only( + top: 50, + ), + child: CircleAvatar( + backgroundImage: AssetImage("assets/images/wheat.png"), + radius: 100, + ), + ), + Container( + margin: const EdgeInsets.fromLTRB(0, 50, 0, 0), + padding: const EdgeInsets.all(30), + child: Table(children: [ + TableRow(children: [ + TableCell( + child: Text( + "Name", + style: TextStyle( + fontSize: 40, fontWeight: FontWeight.w500), + ), + ), + TableCell( + child: Text( + "Anuj", + style: TextStyle(fontSize: 33), + ), + verticalAlignment: + TableCellVerticalAlignment.middle) + ]), + TableRow(children: [ + TableCell( + child: Text( + "Phone", + style: TextStyle( + fontSize: 40, fontWeight: FontWeight.w500), + ), + ), + TableCell( + child: Text( + // snapshot.data["phone"], + "7889561310", + style: TextStyle(fontSize: 30), + ), + verticalAlignment: + TableCellVerticalAlignment.middle) + ]), + TableRow(children: [ + TableCell( + child: Text( + "State", + style: TextStyle( + fontSize: 40, fontWeight: FontWeight.w500), + ), + ), + TableCell( + child: Text( + // snapshot.data["state"], + "GJ", + style: TextStyle(fontSize: 30), + ), + verticalAlignment: + TableCellVerticalAlignment.middle) + ]), + TableRow(children: [ + TableCell( + child: Text( + "District", + style: TextStyle( + fontSize: 40, fontWeight: FontWeight.w500), + ), + ), + TableCell( + child: Text( + // snapshot.data["state"], + "g-nagar", + style: TextStyle(fontSize: 30), + ), + verticalAlignment: + TableCellVerticalAlignment.middle) + ]), + ]), + ) + ], + ), + ); + } + } + }, + ), + ); + } +} diff --git a/team#18/cmms/lib/pages/register.dart b/team#18/cmms/lib/pages/register.dart new file mode 100644 index 00000000..3197d38b --- /dev/null +++ b/team#18/cmms/lib/pages/register.dart @@ -0,0 +1,138 @@ +import 'package:cmms/pages/farmerRegistration.dart'; +import 'package:cmms/pages/traderRegistration.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:flutter/material.dart'; + +class Register extends StatefulWidget { + @override + _RegisterState createState() => _RegisterState(); +} + +class _RegisterState extends State { + @override + Widget build(BuildContext context) { + return MandiScaffold( + isClickable: false, + title: "Register", + body: Scaffold( + body: SingleChildScrollView( + child: Column( + children: [ + SizedBox( + height: 50, + ), + Container( + height: 180.0, + width: 180.0, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.fill, + image: new AssetImage( + 'assets/images/finalogo.jpg', + ), + ), + ), + ), + Container( + margin: new EdgeInsets.fromLTRB(0, 80, 0, 50), + alignment: Alignment.center, + child: Text( + "WHO YOU ARE?", + style: TextStyle(fontSize: 35, fontWeight: FontWeight.bold), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Column( + children: [ + Container( + height: 70.0, + width: 70.0, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.fill, + image: new AssetImage( + 'assets/images/ficon.jpeg', + ), + ), + ), + ), + MaterialButton( + child: Text( + "Farmer", + style: TextStyle(color: Colors.white, fontSize: 20), + ), + height: 50, + minWidth: 150, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => FarmerForm()), + ); + ; + }, + ), + ], + ), + Column( + children: [ + Container( + height: 70.0, + width: 70.0, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.fill, + image: new AssetImage( + 'assets/images/ticon.png', + ), + ), + ), + ), + MaterialButton( + child: Text( + "Trader", + style: TextStyle(color: Colors.white, fontSize: 20), + ), + height: 50, + minWidth: 150, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => TraderForm()), + ); + ; + }, + ), + ], + ), + ], + ) + ], + ), + ), + ), + ); + } +} diff --git a/team#18/cmms/lib/pages/signIn.dart b/team#18/cmms/lib/pages/signIn.dart new file mode 100644 index 00000000..69f4c059 --- /dev/null +++ b/team#18/cmms/lib/pages/signIn.dart @@ -0,0 +1,170 @@ +import 'package:cmms/pages/register.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:flutter/material.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/services.dart'; + +class SignIn extends StatefulWidget { + @override + _SignInState createState() => _SignInState(); +} + +class _SignInState extends State { + TextEditingController _phoneController = TextEditingController(); + FirebaseAuth _auth; + FirebaseUser user; + UserUpdateInfo userInfo; + FocusNode _numberNode = FocusNode(); + + @override + void initState() { + _auth = FirebaseAuth.instance; + userInfo = UserUpdateInfo(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MandiScaffold( + isClickable: false, + title: "Sign In", + body: SingleChildScrollView( + child: Padding( + padding: EdgeInsets.fromLTRB(20, 80, 20, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 200.0, + width: 200.0, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.fill, + image: new AssetImage( + 'assets/images/wheat.png', + ), + ), + ), + ), + Container( + height: 50, + ), + TextFormField( + controller: _phoneController, + focusNode: _numberNode, + maxLength: 10, + keyboardType: TextInputType.phone, + inputFormatters: [ + WhitelistingTextInputFormatter( + RegExp("[0-9]"), + ), + ], + validator: (value) { + if (value.isEmpty) { + return "Please enter your phone number"; + } + if (value.length != 10) { + return "Please enter 10 digits"; + } + return null; + }, + decoration: InputDecoration( + errorStyle: TextStyle(color: Colors.white), + filled: true, + fillColor: Colors.white, + border: OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12.0), + ), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + hintText: "10-digit mobile number", + ), + ), + MaterialButton( + child: Text( + "Sign in", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + _verifyPhoneNumber(); + }, + ), + Container( + margin: new EdgeInsets.fromLTRB(0, 10, 0, 0), + height: 30, + child: Text( + "Or", + style: TextStyle(fontSize: 18, fontStyle: FontStyle.italic), + textAlign: TextAlign.center, + ), + ), + MaterialButton( + child: Text( + "Register", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => Register()), + ); + }, + ), + ], + ), + ), + ), + ); + } + + Future _verifyPhoneNumber() async { + await _auth.verifyPhoneNumber( + phoneNumber: "+91" + _phoneController.text, + codeSent: (String verficationID, [int resendcodeTimeout]) { + print("Code Sent to device"); + }, + timeout: Duration(seconds: 30), + verificationFailed: (AuthException exception) { + print("Verification Failed: $exception"); + }, + verificationCompleted: (AuthCredential credentials) async { + print("Phone Verification Complete"); + await _auth.signInWithCredential(credentials).then((user) { + // Fluttertoast.showToast( + // msg: "Successfully Signed in", + // backgroundColor: Colors.grey, + // gravity: ToastGravity.BOTTOM, + // ); + }); + }, + codeAutoRetrievalTimeout: (String verificaionID) { + print("Timed out"); + }, + ); + } +} diff --git a/team#18/cmms/lib/pages/splashScreen.dart b/team#18/cmms/lib/pages/splashScreen.dart new file mode 100644 index 00000000..69519da9 --- /dev/null +++ b/team#18/cmms/lib/pages/splashScreen.dart @@ -0,0 +1,15 @@ +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:flutter/material.dart'; + +class SplashScreen extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MandiScaffold( + isClickable: true, + title: "Loading", + body: Center( + child: CircularProgressIndicator(), + ), + ); + } +} diff --git a/team#18/cmms/lib/pages/traderRegistration.dart b/team#18/cmms/lib/pages/traderRegistration.dart new file mode 100644 index 00000000..db6ce26d --- /dev/null +++ b/team#18/cmms/lib/pages/traderRegistration.dart @@ -0,0 +1,265 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cmms/utils/Mandi.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:cmms/utils/mandiScaffold.dart'; +import 'package:fluttertoast/fluttertoast.dart'; + +class TraderForm extends StatefulWidget { + @override + _TraderFormState createState() => _TraderFormState(); +} + +class _TraderFormState extends State { + final GlobalKey _formKey = new GlobalKey(); + List _states = ['', 'GJ', 'MP', 'UP', 'JK']; + String _state = ''; + List _districts = [ + '', + 'gandhinagar', + 'himmatnagar', + 'ahmedabad', + ]; + String _district = ''; + List _mandis = [ + '', + 'sundar', + 'prayagraj', + ]; + String _mandi = ''; + + TextEditingController _nameController = TextEditingController(); + TextEditingController _phoneController = TextEditingController(); + TextEditingController _firmController = TextEditingController(); + + FirebaseAuth _auth; + FirebaseUser user; + UserUpdateInfo userInfo; + + @override + void initState() { + super.initState(); + _auth = FirebaseAuth.instance; + userInfo = UserUpdateInfo(); + } + + @override + Widget build(BuildContext context) { + return MandiScaffold( + isClickable: false, + title: "Trader Form", + body: new Container( + child: new Form( + key: _formKey, + autovalidate: true, + child: new ListView( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + children: [ + new TextFormField( + controller: _nameController, + decoration: const InputDecoration( + icon: const Icon(Icons.person), + hintText: 'Enter your first and last name', + labelText: 'Name', + ), + ), + new TextFormField( + controller: _phoneController, + decoration: const InputDecoration( + icon: const Icon(Icons.phone), + hintText: 'Enter a phone number', + labelText: 'Phone', + ), + keyboardType: TextInputType.phone, + inputFormatters: [ + WhitelistingTextInputFormatter.digitsOnly, + ], + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'State', + ), + isEmpty: _state == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _state, + isDense: true, + onChanged: (String newValue) { + setState(() { + _state = newValue; + state.didChange(newValue); + }); + }, + items: _states.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'District', + ), + isEmpty: _district == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _district, + isDense: true, + onChanged: (String newValue) { + setState( + () { + _district = newValue; + state.didChange(newValue); + }, + ); + }, + items: _districts.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'Mandi', + ), + isEmpty: _mandi == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _mandi, + isDense: true, + onChanged: (String newValue) { + setState( + () { + _mandi = newValue; + state.didChange(newValue); + }, + ); + }, + items: _mandis.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new TextFormField( + controller: _firmController, + decoration: const InputDecoration( + icon: const Icon(Icons.local_offer), + hintText: 'Enter Firm name', + labelText: 'Firm Name', + ), + ), + new Container( + margin: new EdgeInsets.fromLTRB(0, 60, 0, 0), + child: MaterialButton( + child: Text( + "Register", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () async { + await _auth.verifyPhoneNumber( + phoneNumber: "+91" + _phoneController.text, + codeSent: (String verficationID, + [int resendcodeTimeout]) { + print("Code Sent to device"); + }, + timeout: Duration(seconds: 30), + verificationFailed: (AuthException exception) { + print("Verification Failed: $exception"); + Fluttertoast.showToast( + msg: "Verification Failed", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }, + verificationCompleted: + (AuthCredential credentials) async { + print("Phone Verification Complete"); + await _auth + .signInWithCredential(credentials) + .then((user) { + // Navigator.of(context).pop(); + Fluttertoast.showToast( + msg: "Succesfully Registered", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }); + print("user: $user"); + await Mandi.pref + .setString(Mandi.namePref, _nameController.text); + await Mandi.pref + .setString(Mandi.phonePref, _phoneController.text); + await Mandi.pref.setString(Mandi.statePref, _state); + await Mandi.pref + .setString(Mandi.districtPref, _district); + + await Firestore.instance + .collection("traders") + .document(_phoneController.text) + .setData({ + "firm": _firmController.text, + "phone": _phoneController.text, + "name": _nameController.text, + "location": { + "district": _district, + "state": _state, + "mandi": _mandi, + } + }); + }, + codeAutoRetrievalTimeout: (String verificaionID) { + print("Timed out"); + Fluttertoast.showToast( + msg: "Timed out. Try again", + backgroundColor: Colors.grey, + gravity: ToastGravity.BOTTOM, + ); + }, + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/team#18/cmms/lib/utils/Mandi.dart b/team#18/cmms/lib/utils/Mandi.dart new file mode 100644 index 00000000..e6e76b8c --- /dev/null +++ b/team#18/cmms/lib/utils/Mandi.dart @@ -0,0 +1,24 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class Mandi { + //common strings + static String appName = "Mandi"; + + //pages titles + static String profile = "Your profile"; + static String homePage = "Homepage"; + static String signIn = "Sign In"; + static String register = "Register Yourself"; + + //common messages + static String error = "Some Error occured"; + + //prefs + static String languagePref = "languagePref"; + static String namePref = "namePref"; + static String phonePref = "phonePref"; + static String districtPref = "districtPref"; + static String statePref = "statePref"; + + static SharedPreferences pref; +} diff --git a/team#18/cmms/lib/utils/mandiScaffold.dart b/team#18/cmms/lib/utils/mandiScaffold.dart new file mode 100644 index 00000000..bc0d368c --- /dev/null +++ b/team#18/cmms/lib/utils/mandiScaffold.dart @@ -0,0 +1,72 @@ +import 'package:cmms/pages/profile.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; + +class MandiScaffold extends StatefulWidget { + MandiScaffold({ + @required this.title, + @required this.body, + @required this.isClickable, + this.user, + this.leading, + this.floatingButton, + }); + + final String title; + final Widget body; + final Widget leading; + final FirebaseUser user; + final bool isClickable; + final Widget floatingButton; + + @override + _MandiScaffoldState createState() => _MandiScaffoldState(); +} + +class _MandiScaffoldState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + centerTitle: true, + leading: Padding( + padding: const EdgeInsets.all(10.0), + child: widget.isClickable + ? GestureDetector( + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) { + return Profile( + user: widget.user, + ); + }, + ), + ); + }, + child: CircleAvatar( + backgroundImage: AssetImage("assets/images/wheat.png"), + ), + ) + : CircleAvatar( + backgroundImage: AssetImage("assets/images/wheat.png"), + ), + ), + actions: [ + IconButton( + icon: Icon(Icons.translate), + onPressed: () { + print("Change Language"); + }, + ), + ], + ), + body: Padding( + padding: const EdgeInsets.all(8.0), + child: widget.body, + ), + floatingActionButton: widget.floatingButton, + ); + } +} diff --git a/team#18/cmms/lib/utils/tools.dart b/team#18/cmms/lib/utils/tools.dart new file mode 100644 index 00000000..34064707 --- /dev/null +++ b/team#18/cmms/lib/utils/tools.dart @@ -0,0 +1,28 @@ +import 'package:cmms/pages/homepage.dart'; +import 'package:cmms/pages/register.dart'; +import 'package:cmms/pages/splashScreen.dart'; +import 'package:flutter/material.dart'; +import 'package:firebase_auth/firebase_auth.dart'; + +class Tools { + static void changeLanguage(bool isHindi) {} + + static signInHandler() { + return StreamBuilder( + stream: FirebaseAuth.instance.onAuthStateChanged, + builder: (BuildContext context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting || + snapshot.connectionState == ConnectionState.none) { + return SplashScreen(); + } else { + if (snapshot.hasData) { + return HomePage( + user: snapshot.data, + ); + } + return Register(); + } + }, + ); + } +} diff --git a/team#18/cmms/pubspec.lock b/team#18/cmms/pubspec.lock new file mode 100644 index 00000000..3c20639a --- /dev/null +++ b/team#18/cmms/pubspec.lock @@ -0,0 +1,259 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.2" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + barcode_scan: + dependency: "direct main" + description: + name: barcode_scan + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + cloud_firestore: + dependency: "direct main" + description: + name: cloud_firestore + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.9+4" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.1+12" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.0+9" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.3" + flutter_spinkit: + dependency: "direct main" + description: + name: flutter_spinkit + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fluttertoast: + dependency: "direct main" + description: + name: fluttertoast + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.7" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.4" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.3+4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.5" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.5" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.8" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" +sdks: + dart: ">=2.4.0 <3.0.0" + flutter: ">=1.5.0 <2.0.0" diff --git a/team#18/cmms/pubspec.yaml b/team#18/cmms/pubspec.yaml new file mode 100644 index 00000000..f9ed6829 --- /dev/null +++ b/team#18/cmms/pubspec.yaml @@ -0,0 +1,90 @@ +name: cmms +description: A new Flutter project. + +# 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: + flutter: + sdk: flutter + firebase_auth: ^0.11.1+12 + cloud_firestore: ^0.12.9+4 + shared_preferences: ^0.5.3+4 + flutter_spinkit: ^4.0.0 + fluttertoast: ^3.1.3 + barcode_scan: ^1.0.0 + + + # 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 + flutter_launcher_icons: "^0.7.3" +flutter_icons: + android: "launcher_icon" + ios: true + image_path: "assets/images/logo.png" + + + +# 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: + - assets/images/ + # - Farmer-Icon-min.png + # - com.creatorscorp.krushidhan.png + #- Image-7.png + # - 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 diff --git a/team#18/cmms/test/widget_test.dart b/team#18/cmms/test/widget_test.dart new file mode 100644 index 00000000..9e9013cf --- /dev/null +++ b/team#18/cmms/test/widget_test.dart @@ -0,0 +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:cmms/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); + }); +} diff --git a/team#18/qrgen/.gitignore b/team#18/qrgen/.gitignore new file mode 100644 index 00000000..2ddde2a5 --- /dev/null +++ b/team#18/qrgen/.gitignore @@ -0,0 +1,73 @@ +# 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/Flutter/flutter_export_environment.sh +**/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/team#18/qrgen/.metadata b/team#18/qrgen/.metadata new file mode 100644 index 00000000..aeb01ee2 --- /dev/null +++ b/team#18/qrgen/.metadata @@ -0,0 +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: 2d2a1ffec95cc70a3218872a2cd3f8de4933c42f + channel: stable + +project_type: app diff --git a/team#18/qrgen/README.md b/team#18/qrgen/README.md new file mode 100644 index 00000000..e3d78ac9 --- /dev/null +++ b/team#18/qrgen/README.md @@ -0,0 +1,16 @@ +# qrgen + +A new Flutter project. + +## 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/team#18/qrgen/android/app/build.gradle b/team#18/qrgen/android/app/build.gradle new file mode 100644 index 00000000..d593f5a7 --- /dev/null +++ b/team#18/qrgen/android/app/build.gradle @@ -0,0 +1,70 @@ +apply plugin: 'com.android.application' +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 "com.example.qrgen" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "androidx.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 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'com.google.firebase:firebase-analytics:17.2.0' +} +apply plugin: 'com.google.gms.google-services' diff --git a/team#18/qrgen/android/app/google-services.json b/team#18/qrgen/android/app/google-services.json new file mode 100644 index 00000000..ebc91e63 --- /dev/null +++ b/team#18/qrgen/android/app/google-services.json @@ -0,0 +1,93 @@ +{ + "project_info": { + "project_number": "507519612700", + "firebase_url": "https://mandi-system.firebaseio.com", + "project_id": "mandi-system", + "storage_bucket": "mandi-system.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:507519612700:android:49deb11892e2f5c3dbecd9", + "android_client_info": { + "package_name": "com.example.qrgen" + } + }, + "oauth_client": [ + { + "client_id": "507519612700-momgcbljqh9b4eh292eej4oca4efnp47.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.example.qrgen", + "certificate_hash": "98dcdffc49c5ebbf334b6968a3de554990b46f86" + } + }, + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyD_RmUkxHoSkP1EhzyFprrTao4--wFy6io" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:507519612700:android:4ac811447b3c81fadbecd9", + "android_client_info": { + "package_name": "com.nahiapata.cmms" + } + }, + "oauth_client": [ + { + "client_id": "507519612700-p641ju1816i9qdtk7gr3rem18nt1ts1s.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.nahiapata.cmms", + "certificate_hash": "b0d9da5b9a995d2ac0d08c78aadb3105670c9b76" + } + }, + { + "client_id": "507519612700-l781kc2i4011psjhv2uklo776jcq4e24.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.nahiapata.cmms", + "certificate_hash": "98dcdffc49c5ebbf334b6968a3de554990b46f86" + } + }, + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyD_RmUkxHoSkP1EhzyFprrTao4--wFy6io" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "507519612700-h58300ehigc391t4odleh7k7rkes82ih.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/team#18/qrgen/android/app/src/debug/AndroidManifest.xml b/team#18/qrgen/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..da3c14cd --- /dev/null +++ b/team#18/qrgen/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/team#18/qrgen/android/app/src/main/AndroidManifest.xml b/team#18/qrgen/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..3eef1fcf --- /dev/null +++ b/team#18/qrgen/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/team#18/qrgen/android/app/src/main/kotlin/com/example/qrgen/MainActivity.kt b/team#18/qrgen/android/app/src/main/kotlin/com/example/qrgen/MainActivity.kt new file mode 100644 index 00000000..7176fd60 --- /dev/null +++ b/team#18/qrgen/android/app/src/main/kotlin/com/example/qrgen/MainActivity.kt @@ -0,0 +1,13 @@ +package com.example.qrgen + +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/team#18/qrgen/android/app/src/main/res/drawable/launch_background.xml b/team#18/qrgen/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/team#18/qrgen/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/team#18/qrgen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/team#18/qrgen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..db77bb4b Binary files /dev/null and b/team#18/qrgen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/team#18/qrgen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/team#18/qrgen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..17987b79 Binary files /dev/null and b/team#18/qrgen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/team#18/qrgen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/team#18/qrgen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..09d43914 Binary files /dev/null and b/team#18/qrgen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/team#18/qrgen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/team#18/qrgen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..d5f1c8d3 Binary files /dev/null and b/team#18/qrgen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/team#18/qrgen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/team#18/qrgen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..4d6372ee Binary files /dev/null and b/team#18/qrgen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/team#18/qrgen/android/app/src/main/res/values/styles.xml b/team#18/qrgen/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..00fa4417 --- /dev/null +++ b/team#18/qrgen/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/team#18/qrgen/android/app/src/profile/AndroidManifest.xml b/team#18/qrgen/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..da3c14cd --- /dev/null +++ b/team#18/qrgen/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/team#18/qrgen/android/build.gradle b/team#18/qrgen/android/build.gradle new file mode 100644 index 00000000..643a76ee --- /dev/null +++ b/team#18/qrgen/android/build.gradle @@ -0,0 +1,32 @@ +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" + classpath 'com.google.gms:google-services:4.3.2' + } +} + +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/team#18/qrgen/android/gradle.properties b/team#18/qrgen/android/gradle.properties new file mode 100644 index 00000000..755300e3 --- /dev/null +++ b/team#18/qrgen/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M + +android.useAndroidX=true +android.enableJetifier=true diff --git a/team#18/qrgen/android/gradle/wrapper/gradle-wrapper.properties b/team#18/qrgen/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..2819f022 --- /dev/null +++ b/team#18/qrgen/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +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 diff --git a/team#18/qrgen/android/settings.gradle b/team#18/qrgen/android/settings.gradle new file mode 100644 index 00000000..5a2f14fb --- /dev/null +++ b/team#18/qrgen/android/settings.gradle @@ -0,0 +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 +} diff --git a/team#18/qrgen/ios/Flutter/AppFrameworkInfo.plist b/team#18/qrgen/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..6b4c0f78 --- /dev/null +++ b/team#18/qrgen/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +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 + + diff --git a/team#18/qrgen/ios/Flutter/Debug.xcconfig b/team#18/qrgen/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/team#18/qrgen/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/team#18/qrgen/ios/Flutter/Release.xcconfig b/team#18/qrgen/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/team#18/qrgen/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/team#18/qrgen/ios/Runner.xcodeproj/project.pbxproj b/team#18/qrgen/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..2f4c1fcd --- /dev/null +++ b/team#18/qrgen/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,519 @@ +// !$*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; + 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 = com.example.qrgen; + 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 = com.example.qrgen; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + 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 = com.example.qrgen; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + 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/team#18/qrgen/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/team#18/qrgen/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/team#18/qrgen/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/team#18/qrgen/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/team#18/qrgen/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..a28140cf --- /dev/null +++ b/team#18/qrgen/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/qrgen/ios/Runner.xcworkspace/contents.xcworkspacedata b/team#18/qrgen/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/team#18/qrgen/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/team#18/qrgen/ios/Runner/AppDelegate.swift b/team#18/qrgen/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/team#18/qrgen/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +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" + } +} diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 00000000..dc9ada47 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 00000000..28c6bf03 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 00000000..2ccbfd96 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 00000000..f091b6b0 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 00000000..4cde1211 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 00000000..d0ef06e7 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 00000000..dcdc2306 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 00000000..2ccbfd96 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 00000000..c8f9ed8f Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 00000000..a6d6b860 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 00000000..a6d6b860 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 00000000..75b2d164 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 00000000..c4df70d3 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 00000000..6a84f41e Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 00000000..d0e1f585 Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +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" + } +} diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/team#18/qrgen/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# 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/team#18/qrgen/ios/Runner/Base.lproj/LaunchScreen.storyboard b/team#18/qrgen/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/team#18/qrgen/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/qrgen/ios/Runner/Base.lproj/Main.storyboard b/team#18/qrgen/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/team#18/qrgen/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/team#18/qrgen/ios/Runner/Info.plist b/team#18/qrgen/ios/Runner/Info.plist new file mode 100644 index 00000000..4fe8240c --- /dev/null +++ b/team#18/qrgen/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + qrgen + 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/team#18/qrgen/ios/Runner/Runner-Bridging-Header.h b/team#18/qrgen/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..7335fdf9 --- /dev/null +++ b/team#18/qrgen/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/team#18/qrgen/lib/Qr.dart b/team#18/qrgen/lib/Qr.dart new file mode 100644 index 00000000..751702d0 --- /dev/null +++ b/team#18/qrgen/lib/Qr.dart @@ -0,0 +1,3 @@ +class QR { + static var jsonData; +} diff --git a/team#18/qrgen/lib/gen.dart b/team#18/qrgen/lib/gen.dart new file mode 100644 index 00000000..f46156cf --- /dev/null +++ b/team#18/qrgen/lib/gen.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'dart:ui'; +import 'package:flutter/rendering.dart'; +import 'package:qrgen/Qr.dart'; +import 'package:qrgen/main.dart'; +import 'dart:convert'; + +class QrScreen extends StatefulWidget { + @override + _QrScreenState createState() => _QrScreenState(); +} + +class _QrScreenState extends State { + static const double _topSectionTopPadding = 50.0; + static const double _topSectionBottomPadding = 20.0; + GlobalKey globalKey = new GlobalKey(); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('QR Code Generator')), + body: _contentWidget(), + ); + } + + _contentWidget() { + print("-------------------"); + print(QR.jsonData); + var data1 = json.decode(QR.jsonData); + print(data1); + var a = data1['phone']; + print(a); + + // var dta1 = json.decode(QR.jsonData.toString()); + + // print(dta1.body["phone"]); + final bodyHeight = MediaQuery.of(context).size.height - + MediaQuery.of(context).viewInsets.bottom; + return Container( + color: const Color(0xFFFFFFFF), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only( + top: _topSectionTopPadding, + left: 20.0, + right: 10.0, + bottom: _topSectionBottomPadding, + ), + child: Container(), + ), + Expanded( + child: Center( + child: RepaintBoundary( + key: globalKey, + child: QrImage( + data: QR.jsonData.toString(), + size: 0.5 * bodyHeight, + // onError: (ex) { + // print("[QR] ERROR - $ex"); + // setState(() { + // _inputErrorText = + // "Error! Maybe your input value is too long?"; + // }); + // }, + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/team#18/qrgen/lib/main.dart b/team#18/qrgen/lib/main.dart new file mode 100644 index 00000000..ec5bbf14 --- /dev/null +++ b/team#18/qrgen/lib/main.dart @@ -0,0 +1,145 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:qrgen/Qr.dart'; +import 'package:qrgen/gen.dart'; + +// static var jsonData; + +void main() => runApp(MyApp()); + +class MyApp extends StatefulWidget { + @override + _MyAppState createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + home: DForm(), + theme: ThemeData.dark(), + ); + } +} + +class DForm extends StatefulWidget { + @override + _DFormState createState() => _DFormState(); +} + +class _DFormState extends State { + final GlobalKey _formKey = new GlobalKey(); + List _comodities = [ + '', + 'onion', + 'Potato', + 'corn', + 'vegies', + ]; + String _comodity = ''; + final myControllerp = TextEditingController(); + final myControllers = TextEditingController(); + // var jsonData; + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("hey"), + centerTitle: true, + ), + body: new Container( + child: new Form( + key: _formKey, + autovalidate: true, + child: new ListView( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + children: [ + new TextFormField( + decoration: const InputDecoration( + icon: const Icon(Icons.phone), + hintText: 'Enter a phone number', + labelText: 'Phone', + ), + controller: myControllerp, + keyboardType: TextInputType.phone, + inputFormatters: [ + WhitelistingTextInputFormatter.digitsOnly, + ], + ), + new FormField( + builder: (FormFieldState state) { + return InputDecorator( + decoration: InputDecoration( + icon: const Icon(Icons.home), + labelText: 'Comodities', + ), + isEmpty: _comodity == '', + child: new DropdownButtonHideUnderline( + child: new DropdownButton( + value: _comodity, + isDense: true, + onChanged: (String newValue) { + setState(() { + _comodity = newValue; + state.didChange(newValue); + }); + }, + items: _comodities.map((String value) { + return new DropdownMenuItem( + value: value, + child: new Text(value), + ); + }).toList(), + ), + ), + ); + }, + ), + new TextFormField( + decoration: const InputDecoration( + icon: const Icon(Icons.local_offer), + hintText: '(In Kgs)', + labelText: 'Supply', + ), + controller: myControllers, + keyboardType: TextInputType.phone, + ), + new Container( + margin: new EdgeInsets.fromLTRB(0, 60, 0, 0), + child: MaterialButton( + child: Text( + "Register", + style: TextStyle(color: Colors.white), + ), + height: 40, + minWidth: 200, + color: Colors.green, + shape: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(27)), + borderSide: BorderSide( + color: Colors.white, + width: 0, + ), + ), + onPressed: () { + print("++++++++++++++++++++++++++++++++++++++"); + print(myControllerp.text); + print(myControllers.text); + print(_comodity); + QR.jsonData = + '{ "phone" : "${myControllerp.text}", "supply" : "${myControllers.text}", "comodity" : "$_comodity" }'; + print(QR.jsonData.toString()); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => QrScreen()), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/team#18/qrgen/pubspec.lock b/team#18/qrgen/pubspec.lock new file mode 100644 index 00000000..dd9fafa8 --- /dev/null +++ b/team#18/qrgen/pubspec.lock @@ -0,0 +1,161 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.11" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.7" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.4" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0+1" + qr: + dependency: transitive + description: + name: qr + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.5" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.5" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.8" +sdks: + dart: ">=2.2.2 <3.0.0" + flutter: ">=1.5.0" diff --git a/team#18/qrgen/pubspec.yaml b/team#18/qrgen/pubspec.yaml new file mode 100644 index 00000000..fa81f94e --- /dev/null +++ b/team#18/qrgen/pubspec.yaml @@ -0,0 +1,73 @@ +name: qrgen +description: A new Flutter project. + +# 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: + 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 + qr_flutter: ^3.0.1 + +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 diff --git a/team#18/qrgen/test/widget_test.dart b/team#18/qrgen/test/widget_test.dart new file mode 100644 index 00000000..48734b25 --- /dev/null +++ b/team#18/qrgen/test/widget_test.dart @@ -0,0 +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:qrgen/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); + }); +}