diff --git a/.gitignore b/.gitignore
index 10be197..2aaf1f0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,4 @@ buck-out/
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
+Flutter-App/android/app/google-services.json
diff --git a/Flutter-App/.gitignore b/Flutter-App/.gitignore
new file mode 100644
index 0000000..5632cd7
--- /dev/null
+++ b/Flutter-App/.gitignore
@@ -0,0 +1,40 @@
+# Android
+google-services.json
+
+# 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
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Exceptions to above rules.
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/Flutter-App/.metadata b/Flutter-App/.metadata
new file mode 100644
index 0000000..d05b6c3
--- /dev/null
+++ b/Flutter-App/.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: 0b8abb4724aa590dd0f429683339b1e045a1594d
+ channel: stable
+
+project_type: app
diff --git a/Flutter-App/.packages b/Flutter-App/.packages
new file mode 100644
index 0000000..6bd03d4
--- /dev/null
+++ b/Flutter-App/.packages
@@ -0,0 +1,81 @@
+# Generated by pub on 2020-04-10 12:47:12.955748.
+ansicolor:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/ansicolor-1.0.2/lib/
+archive:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/archive-2.0.11/lib/
+args:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/args-1.5.2/lib/
+async:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.4.0/lib/
+boolean_selector:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-1.0.5/lib/
+cached_network_image:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-2.0.0/lib/
+charcode:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.1.2/lib/
+cloud_firestore:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/lib/
+collection:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.14.11/lib/
+console_log_handler:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/console_log_handler-1.1.6/lib/
+convert:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/lib/
+crypto:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.3/lib/
+cupertino_icons:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-0.1.3/lib/
+curved_navigation_bar:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/curved_navigation_bar-0.3.2/lib/
+equatable:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/equatable-1.1.1/lib/
+extra_pedantic:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/extra_pedantic-1.2.0/lib/
+fab_circular_menu:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/fab_circular_menu-1.0.0/lib/
+firebase:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/firebase-7.2.1/lib/
+firebase_auth:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.14.0+9/lib/
+firebase_core:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.4+3/lib/
+firebase_core_platform_interface:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_platform_interface-1.0.4/lib/
+firebase_core_web:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/lib/
+flutter:file:///home/viraj/Documents/Developments/flutter/packages/flutter/lib/
+flutter_cache_manager:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-1.1.3/lib/
+flutter_image:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_image-3.0.0/lib/
+flutter_map:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_map-0.8.2/lib/
+flutter_plugin_android_lifecycle:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.6/lib/
+flutter_speed_dial:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_speed_dial-1.2.5/lib/
+flutter_test:file:///home/viraj/Documents/Developments/flutter/packages/flutter_test/lib/
+flutter_web_plugins:file:///home/viraj/Documents/Developments/flutter/packages/flutter_web_plugins/lib/
+geodesy:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/geodesy-0.3.2/lib/
+geojson:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/geojson-0.9.1/lib/
+geolocator:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-5.3.1/lib/
+geopoint:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/geopoint-0.7.1/lib/
+google_api_availability:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/google_api_availability-2.0.4/lib/
+google_maps_flutter:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/google_maps_flutter-0.5.25/lib/
+http:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+4/lib/
+http_parser:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.3/lib/
+image:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/image-2.1.4/lib/
+intl:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/
+iso:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/iso-0.3.0/lib/
+js:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.1+1/lib/
+latlong:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/latlong-0.6.1/lib/
+location:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/location-2.5.4/lib/
+location_permissions:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/location_permissions-2.0.5/lib/
+logging:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/logging-0.11.4/lib/
+map_controller:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/map_controller-0.7.1/lib/
+matcher:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.6/lib/
+meta:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.1.8/lib/
+modal_progress_hud:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/modal_progress_hud-0.1.3/lib/
+path:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.6.4/lib/
+path_provider:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.5/lib/
+path_provider_macos:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4/lib/
+path_provider_platform_interface:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-1.0.1/lib/
+pedantic:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.8.0+1/lib/
+petitparser:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-2.4.0/lib/
+platform:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/platform-2.2.1/lib/
+plugin_platform_interface:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-1.0.2/lib/
+positioned_tap_detector:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/positioned_tap_detector-1.0.3/lib/
+quiver:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-2.0.5/lib/
+rxdart:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.23.1/lib/
+sky_engine:file:///home/viraj/Documents/Developments/flutter/bin/cache/pkg/sky_engine/lib/
+slugify2:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/slugify2-0.2.1/lib/
+source_span:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.5.5/lib/
+sqflite:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.0/lib/
+sqflite_common:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-1.0.0+1/lib/
+stack_trace:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.9.3/lib/
+stream_channel:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.0.0/lib/
+string_scanner:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.0.5/lib/
+synchronized:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-2.2.0/lib/
+term_glyph:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.1.0/lib/
+test_api:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.11/lib/
+transparent_image:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/transparent_image-1.0.0/lib/
+tuple:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/tuple-1.0.3/lib/
+typed_data:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.6/lib/
+uuid:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-2.0.4/lib/
+validate:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/validate-1.7.0/lib/
+vector_math:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.0.8/lib/
+xml:file:///home/viraj/Documents/Developments/flutter/.pub-cache/hosted/pub.dartlang.org/xml-3.5.0/lib/
+dengue_stop:lib/
diff --git a/Flutter-App/README.md b/Flutter-App/README.md
new file mode 100644
index 0000000..8ea2ae9
--- /dev/null
+++ b/Flutter-App/README.md
@@ -0,0 +1,18 @@
+# Diseases-Stop
+
+This project will be used to stop dengue spread in the society. After the complete and successful implementation for that issue, the project will be extended to prevent othe diseases as well. Therefore the project name will be used as **Diseases-Stop**.
+
+Access the complete project use the bellow link.
+
+- [Diseases-Stop Project](https://github.com/viradhanus/Diseases-Stop)
+
+
+## Getting Started
+
+This is a simple login and registration screens for the flutter app, dengue-stop. Previous logo of the react native app is used as the main logo of the flutter app. **Hero animation** is used to enhance UX.
+
+Firebase authentication is used to authenticate users to the app. Users trying to log in with badly-formated email address will be rejected and they should enter atleast 6 characters as a password to log in to the app. Logout button (**X**) is created in Main-Screen. A flutter widget **modal_progress_hud** is used to improve user experience.
+
+For more information use the bellow link.
+
+- [ScoreLab - Dengue-Stop Project](https://github.com/scorelab/dengue-stop)
diff --git a/Flutter-App/android/.gitignore b/Flutter-App/android/.gitignore
new file mode 100644
index 0000000..bc2100d
--- /dev/null
+++ b/Flutter-App/android/.gitignore
@@ -0,0 +1,7 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
diff --git a/Flutter-App/android/app/build.gradle b/Flutter-App/android/app/build.gradle
new file mode 100644
index 0000000..3659033
--- /dev/null
+++ b/Flutter-App/android/app/build.gradle
@@ -0,0 +1,64 @@
+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 from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+apply plugin: 'com.google.gms.google-services'
+
+android {
+ compileSdkVersion 29
+
+ lintOptions {
+ disable 'InvalidPackage'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.scorelab.denguestop"
+ minSdkVersion 16
+ targetSdkVersion 29
+ 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 'com.google.firebase:firebase-auth:19.3.0'
+ implementation 'com.google.firebase:firebase-firestore:21.4.1'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test:runner:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+}
diff --git a/Flutter-App/android/app/google-services.json b/Flutter-App/android/app/google-services.json
new file mode 100644
index 0000000..3f3235e
--- /dev/null
+++ b/Flutter-App/android/app/google-services.json
@@ -0,0 +1,48 @@
+{
+ "project_info": {
+ "project_number": "402013291968",
+ "firebase_url": "https://dengue-stop-e74b4.firebaseio.com",
+ "project_id": "dengue-stop-e74b4",
+ "storage_bucket": "dengue-stop-e74b4.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:402013291968:android:abc78cf566c04f9a183425",
+ "android_client_info": {
+ "package_name": "com.scorelab.denguestop"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "402013291968-t0hpq04d14mnudppg3mjem4aam0112ik.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.scorelab.denguestop",
+ "certificate_hash": "97f69b3bb7064bbaa64b849b2727a7fa9b5c8c82"
+ }
+ },
+ {
+ "client_id": "402013291968-cfh6oosnpsfqrua776mu4ae1b6prlrtf.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCocAiWrtbqRYR8_J1-VJZjXFBZHQlrg1c"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "402013291968-cfh6oosnpsfqrua776mu4ae1b6prlrtf.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/Flutter-App/android/app/src/debug/AndroidManifest.xml b/Flutter-App/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..c5d65b8
--- /dev/null
+++ b/Flutter-App/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/Flutter-App/android/app/src/main/AndroidManifest.xml b/Flutter-App/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7bce276
--- /dev/null
+++ b/Flutter-App/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Flutter-App/android/app/src/main/java/com/scorelab/denguestop/MainActivity.java b/Flutter-App/android/app/src/main/java/com/scorelab/denguestop/MainActivity.java
new file mode 100644
index 0000000..770396e
--- /dev/null
+++ b/Flutter-App/android/app/src/main/java/com/scorelab/denguestop/MainActivity.java
@@ -0,0 +1,13 @@
+package com.scorelab.denguestop;
+
+import androidx.annotation.NonNull;
+import io.flutter.embedding.android.FlutterActivity;
+import io.flutter.embedding.engine.FlutterEngine;
+import io.flutter.plugins.GeneratedPluginRegistrant;
+
+public class MainActivity extends FlutterActivity {
+ @Override
+ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
+ GeneratedPluginRegistrant.registerWith(flutterEngine);
+ }
+}
diff --git a/Flutter-App/android/app/src/main/res/drawable/launch_background.xml b/Flutter-App/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/Flutter-App/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/Flutter-App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Flutter-App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
Binary files /dev/null and b/Flutter-App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Flutter-App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Flutter-App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
Binary files /dev/null and b/Flutter-App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Flutter-App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Flutter-App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
Binary files /dev/null and b/Flutter-App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Flutter-App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Flutter-App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
Binary files /dev/null and b/Flutter-App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Flutter-App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Flutter-App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
Binary files /dev/null and b/Flutter-App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Flutter-App/android/app/src/main/res/values/styles.xml b/Flutter-App/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..00fa441
--- /dev/null
+++ b/Flutter-App/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/Flutter-App/android/app/src/profile/AndroidManifest.xml b/Flutter-App/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..c5d65b8
--- /dev/null
+++ b/Flutter-App/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/Flutter-App/android/build.gradle b/Flutter-App/android/build.gradle
new file mode 100644
index 0000000..462ab77
--- /dev/null
+++ b/Flutter-App/android/build.gradle
@@ -0,0 +1,30 @@
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.6.1'
+ classpath 'com.google.gms:google-services:4.3.3'
+ }
+}
+
+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/Flutter-App/android/gradle.properties b/Flutter-App/android/gradle.properties
new file mode 100644
index 0000000..38c8d45
--- /dev/null
+++ b/Flutter-App/android/gradle.properties
@@ -0,0 +1,4 @@
+org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/Flutter-App/android/gradle/wrapper/gradle-wrapper.properties b/Flutter-App/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..7d3bc58
--- /dev/null
+++ b/Flutter-App/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Mar 21 11:27:00 IST 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
diff --git a/Flutter-App/android/settings.gradle b/Flutter-App/android/settings.gradle
new file mode 100644
index 0000000..5a2f14f
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/denguestop.iml b/Flutter-App/denguestop.iml
new file mode 100644
index 0000000..066e058
--- /dev/null
+++ b/Flutter-App/denguestop.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Flutter-App/images/logo.png b/Flutter-App/images/logo.png
new file mode 100644
index 0000000..6f3aa46
Binary files /dev/null and b/Flutter-App/images/logo.png differ
diff --git a/Flutter-App/images/mosquito_icon.png b/Flutter-App/images/mosquito_icon.png
new file mode 100644
index 0000000..f71d393
Binary files /dev/null and b/Flutter-App/images/mosquito_icon.png differ
diff --git a/Flutter-App/ios/.gitignore b/Flutter-App/ios/.gitignore
new file mode 100644
index 0000000..e96ef60
--- /dev/null
+++ b/Flutter-App/ios/.gitignore
@@ -0,0 +1,32 @@
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/Flutter-App/ios/Flutter/AppFrameworkInfo.plist b/Flutter-App/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..6b4c0f7
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/ios/Flutter/Debug.xcconfig b/Flutter-App/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/Flutter-App/ios/Flutter/Debug.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/Flutter-App/ios/Flutter/Release.xcconfig b/Flutter-App/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..592ceee
--- /dev/null
+++ b/Flutter-App/ios/Flutter/Release.xcconfig
@@ -0,0 +1 @@
+#include "Generated.xcconfig"
diff --git a/Flutter-App/ios/Runner.xcodeproj/project.pbxproj b/Flutter-App/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..9db75b3
--- /dev/null
+++ b/Flutter-App/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,518 @@
+// !$*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, ); }; };
+ 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 = 1100;
+ };
+ };
+ };
+ 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 */,
+ 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;
+ SUPPORTED_PLATFORMS = 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.scorelab.denguestop;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.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;
+ SUPPORTED_PLATFORMS = 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.scorelab.denguestop;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.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.scorelab.denguestop;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.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/Flutter-App/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/Flutter-App/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..a28140c
--- /dev/null
+++ b/Flutter-App/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Flutter-App/ios/Runner.xcworkspace/contents.xcworkspacedata b/Flutter-App/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1d526a1
--- /dev/null
+++ b/Flutter-App/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Flutter-App/ios/Runner/AppDelegate.swift b/Flutter-App/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..70693e4
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000..dc9ada4
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..28c6bf0
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..2ccbfd9
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..f091b6b
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..4cde121
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..d0ef06e
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..dcdc230
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..2ccbfd9
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..c8f9ed8
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..a6d6b86
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..a6d6b86
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..75b2d16
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..c4df70d
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..6a84f41
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..d0e1f58
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..0bedcf2
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/Flutter-App/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/Flutter-App/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/Flutter-App/ios/Runner/Base.lproj/LaunchScreen.storyboard b/Flutter-App/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..f2e259c
--- /dev/null
+++ b/Flutter-App/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Flutter-App/ios/Runner/Base.lproj/Main.storyboard b/Flutter-App/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/Flutter-App/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Flutter-App/ios/Runner/Info.plist b/Flutter-App/ios/Runner/Info.plist
new file mode 100644
index 0000000..de3adcd
--- /dev/null
+++ b/Flutter-App/ios/Runner/Info.plist
@@ -0,0 +1,45 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ denguestop
+ 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/Flutter-App/ios/Runner/Runner-Bridging-Header.h b/Flutter-App/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..7335fdf
--- /dev/null
+++ b/Flutter-App/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
\ No newline at end of file
diff --git a/Flutter-App/lib/components/dialog_box.dart b/Flutter-App/lib/components/dialog_box.dart
new file mode 100644
index 0000000..2e88d29
--- /dev/null
+++ b/Flutter-App/lib/components/dialog_box.dart
@@ -0,0 +1,33 @@
+import 'package:flutter/material.dart';
+
+class DialogBox{
+ information(BuildContext context, String title, String description){
+ return showDialog(
+ context: context,
+ barrierDismissible: true,
+
+ builder: (BuildContext context){
+ return AlertDialog(
+ title: Text(title),
+ content: SingleChildScrollView(
+ child: ListBody(
+ children: [
+ Text(description)
+ ],
+ ),
+ ) ,
+
+ actions: [
+ FlatButton(
+ child: Text('Got it'),
+ onPressed: (){
+ return Navigator.pop(context);
+ },
+ )
+ ],
+
+ );
+ }
+ );
+ }
+}
\ No newline at end of file
diff --git a/Flutter-App/lib/components/rounded_button.dart b/Flutter-App/lib/components/rounded_button.dart
new file mode 100644
index 0000000..3c5f165
--- /dev/null
+++ b/Flutter-App/lib/components/rounded_button.dart
@@ -0,0 +1,36 @@
+import 'package:flutter/material.dart';
+
+class RoundedButton extends StatelessWidget {
+ RoundedButton({
+ this.title,
+ this.color,
+ @required this.onPressed,
+ });
+
+ final Color color;
+ final String title;
+ final Function onPressed;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.symmetric(vertical: 16.0),
+ child: Material(
+ color: color,
+ borderRadius: BorderRadius.circular(30.0),
+ elevation: 5.0,
+ child: MaterialButton(
+ onPressed: onPressed,
+ minWidth: 200.0,
+ height: 42.0,
+ child: Text(
+ title,
+ style: TextStyle(
+ color: Colors.white,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
\ No newline at end of file
diff --git a/Flutter-App/lib/constants.dart b/Flutter-App/lib/constants.dart
new file mode 100644
index 0000000..fa68d07
--- /dev/null
+++ b/Flutter-App/lib/constants.dart
@@ -0,0 +1,35 @@
+import 'package:flutter/material.dart';
+
+const kSendButtonTextStyle = TextStyle(
+ color: Colors.lightBlueAccent,
+ fontWeight: FontWeight.bold,
+ fontSize: 18.0,
+);
+
+const kMessageTextFieldDecoration = InputDecoration(
+ contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
+ hintText: 'Type your message here...',
+ border: InputBorder.none,
+);
+
+const kMessageContainerDecoration = BoxDecoration(
+ border: Border(
+ top: BorderSide(color: Colors.lightBlueAccent, width: 2.0),
+ ),
+);
+
+const kTextFieldDecoration = InputDecoration(
+ hintText: '',
+ contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.all(Radius.circular(32.0)),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Colors.blueAccent, width: 1.0),
+ borderRadius: BorderRadius.all(Radius.circular(32.0)),
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Colors.blueAccent, width: 2.0),
+ borderRadius: BorderRadius.all(Radius.circular(32.0)),
+ ),
+);
diff --git a/Flutter-App/lib/main.dart b/Flutter-App/lib/main.dart
new file mode 100644
index 0000000..757641d
--- /dev/null
+++ b/Flutter-App/lib/main.dart
@@ -0,0 +1,35 @@
+import 'package:dengue_stop/screens/user_location_screen.dart';
+import 'package:dengue_stop/screens/post_screen.dart';
+import 'package:dengue_stop/screens/report_screen.dart';
+import 'package:flutter/material.dart';
+import 'package:dengue_stop/screens/chat_screen.dart';
+import 'package:dengue_stop/screens/home_screen.dart';
+import 'package:dengue_stop/screens/welcome_screen.dart';
+import 'package:dengue_stop/screens/login_screen.dart';
+import 'package:dengue_stop/screens/registration_screen.dart';
+import 'package:dengue_stop/screens/main_screen.dart';
+
+
+void main() => runApp(DengueStop());
+
+class DengueStop extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+
+ initialRoute: WelcomeScreen.id,
+ routes: {
+ MainScreen.id:(context) => MainScreen(),
+ WelcomeScreen.id:(context) => WelcomeScreen(),
+ LoginScreen.id:(context) => LoginScreen(),
+ RegistrationScreen.id:(context) => RegistrationScreen(),
+ HomeScreen.id:(context) => HomeScreen(),
+ ReportScreen.id:(context) => ReportScreen(),
+ PostScreen.id:(context) => PostScreen(),
+ ChatScreen.id:(context) => ChatScreen(),
+ UserLocationScreen.id:(context) => UserLocationScreen(),
+ },
+
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/chat_screen.dart b/Flutter-App/lib/screens/chat_screen.dart
new file mode 100644
index 0000000..b4cb4d3
--- /dev/null
+++ b/Flutter-App/lib/screens/chat_screen.dart
@@ -0,0 +1,185 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:dengue_stop/constants.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:cloud_firestore/cloud_firestore.dart';
+
+final _firestore = Firestore.instance;
+FirebaseUser loggedInUser;
+
+class ChatScreen extends StatefulWidget {
+ static const String id = "chats";
+
+ @override
+ _ChatScreenState createState() => _ChatScreenState();
+}
+
+class _ChatScreenState extends State {
+ final messageTextController = TextEditingController();
+ final _auth = FirebaseAuth.instance;
+
+ String messageText;
+
+ @override
+ void initState() {
+ super.initState();
+ getCurrentUser();
+ }
+
+ void getCurrentUser() async {
+ try {
+ final user = await _auth.currentUser();
+ loggedInUser = user;
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ leading: null,
+ actions: [
+ IconButton(
+ icon: Icon(Icons.close),
+ onPressed: () {
+ _auth.signOut();
+ Navigator.pop(context);
+ }),
+ ],
+ title: Text('Chat'),
+ backgroundColor: Colors.blueAccent,
+ ),
+ body: SafeArea(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ MessageStream(),
+ Container(
+ decoration: kMessageContainerDecoration,
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Expanded(
+ child: TextField(
+ controller: messageTextController,
+ onChanged: (value) {
+ messageText = value;
+ },
+ decoration: kMessageTextFieldDecoration,
+ ),
+ ),
+ FlatButton(
+ onPressed: () {
+ //Implement send functionality.
+ messageTextController.clear();
+ _firestore.collection('messages').add({
+ 'text': messageText,
+ 'sender': loggedInUser.email,
+ 'date': DateTime.now().millisecondsSinceEpoch
+ });
+ },
+ child: Text(
+ 'Send',
+ style: kSendButtonTextStyle,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+class MessageBubble extends StatelessWidget {
+ MessageBubble({this.text, this.sender, this.isMe});
+
+ final String sender;
+ final String text;
+ final bool isMe;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.all(10.0),
+ child: Column(
+ crossAxisAlignment:
+ isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,
+ children: [
+ Text(
+ isMe ? "" : sender,
+ style: TextStyle(
+ fontSize: 12.0,
+ color: Colors.black54,
+ ),
+ ),
+ Material(
+ borderRadius: BorderRadius.only(
+ topLeft: isMe ? Radius.circular(30.0) : Radius.circular(0.0),
+ topRight: isMe ? Radius.circular(0.0) : Radius.circular(30.0),
+ bottomLeft: Radius.circular(30.0),
+ bottomRight: Radius.circular(30.0),
+ ),
+ elevation: 5.0,
+ color: isMe ? Colors.lightBlueAccent : Colors.white,
+ child: Padding(
+ padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
+ child: Text(
+ text,
+ style: TextStyle(
+ fontSize: 15.0,
+ color: isMe ? Colors.white : Colors.black54,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+class MessageStream extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return StreamBuilder(
+ stream: _firestore.collection('messages').orderBy('date',descending: false).snapshots(),
+ builder: (context, snapshot) {
+ if (!snapshot.hasData) {
+ return Center(
+ child: CircularProgressIndicator(
+ backgroundColor: Colors.lightBlueAccent,
+ ),
+ );
+ }
+ final messages = snapshot.data.documents.reversed;
+ List messageBubbles = [];
+ for (var message in messages) {
+ final messageText = message.data['text'];
+ final messageSender = message.data['sender'];
+
+ final currentUser = loggedInUser.email;
+
+ final messageBubble = MessageBubble(
+ sender: messageSender,
+ text: messageText,
+ isMe: messageSender == currentUser,
+ );
+ messageBubbles.add(messageBubble);
+ }
+ return Expanded(
+ child: ListView(
+ reverse: true,
+ padding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 20.0),
+ children: messageBubbles,
+ ),
+ );
+ },
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/home_screen.dart b/Flutter-App/lib/screens/home_screen.dart
new file mode 100644
index 0000000..9de8f7d
--- /dev/null
+++ b/Flutter-App/lib/screens/home_screen.dart
@@ -0,0 +1,197 @@
+import 'dart:async';
+
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:dengue_stop/components/dialog_box.dart';
+import 'package:fab_circular_menu/fab_circular_menu.dart';
+import 'package:flutter/material.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:flutter_map/flutter_map.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_speed_dial/flutter_speed_dial.dart';
+import 'package:geolocator/geolocator.dart';
+import 'package:latlong/latlong.dart';
+import 'package:map_controller/map_controller.dart';
+
+class HomeScreen extends StatefulWidget {
+ static const String id = "home";
+
+ @override
+ _HomeScreenState createState() => _HomeScreenState();
+}
+
+class _HomeScreenState extends State {
+
+ LatLng userLocation = LatLng(7.8731, 80.7718);
+ var zoom =7.5;
+
+ DialogBox _dialogBox = DialogBox();
+
+ final _auth = FirebaseAuth.instance;
+ FirebaseUser loggedInUser;
+
+ List allMarkers = [];
+
+ MapController mapController;
+
+ @override
+ void initState() {
+ // intialize the controllers
+ mapController = MapController();
+
+ super.initState();
+ getCurrentUser();
+
+ }
+
+
+
+
+ void _getCurrentLocation() async {
+ final position = await Geolocator()
+ .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
+ print(position);
+
+ setState(() {
+
+ userLocation = LatLng(position.latitude, position.longitude);
+ zoom =12.0;
+ mapController.move(userLocation,zoom);
+
+ allMarkers.add(
+ Marker(
+ width: 45.0,
+ height: 45.0,
+ point: userLocation,
+ builder: (context) => Container(
+ child: IconButton(
+ icon: Icon(Icons.location_on),
+ color: Colors.lightGreenAccent,
+ iconSize: 45,
+ onPressed: () {},
+ ),
+ ),
+ ),
+ );
+ });
+ }
+
+ void getCurrentUser() async {
+ try {
+ final user = await _auth.currentUser();
+ loggedInUser = user;
+ } catch (e) {
+ print(e);
+ }
+ }
+
+
+
+ Widget loadMap() {
+ return StreamBuilder(
+ stream: Firestore.instance.collection('markers').snapshots(),
+ builder: (context, snapshot) {
+ if (!snapshot.hasData) return Text('Loading maps..');
+ for (int i = 0; i < snapshot.data.documents.length; i++) {
+ allMarkers.add(
+ Marker(
+ width: 45.0,
+ height: 45.0,
+ point: LatLng(snapshot.data.documents[i]['coords'].latitude,
+ snapshot.data.documents[i]['coords'].longitude),
+ builder: (context) => Container(
+ child: IconButton(
+ icon: Icon(Icons.location_on),
+ color: Colors.red,
+ iconSize: 45,
+ onPressed: () {
+ print(snapshot.data.documents[i]['place']);
+ },
+ ),
+ ),
+ ),
+ );
+ }
+
+ return new FlutterMap(
+ mapController: mapController,
+ options: new MapOptions(
+ center: userLocation,
+// zoom: 8.0,
+ zoom: zoom,
+
+ ),
+ layers: [
+ new TileLayerOptions(
+ urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
+ subdomains: ['a', 'b', 'c'],
+// urlTemplate:
+// 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}',
+// subdomains: ['a', 'b', 'c'],
+// tileProvider: CachedNetworkTileProvider(),
+ ),
+ MarkerLayerOptions(
+ markers: allMarkers,
+ ),
+ ],
+ );
+ },
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ leading: null,
+ iconTheme: IconThemeData(
+ color: Colors.white, //change color here
+ ),
+ actions: [
+ IconButton(
+ icon: Icon(Icons.close),
+ onPressed: () {
+ _auth.signOut();
+ Navigator.pop(context);
+ }),
+ ],
+ title: Text('Patient Distribution',
+ style: TextStyle(
+ color: Colors.white,
+ )),
+ backgroundColor: Colors.blueAccent,
+ ),
+ floatingActionButton: SpeedDial(
+ animatedIcon: AnimatedIcons.menu_close,
+ children: [
+ SpeedDialChild(
+ child: Icon(Icons.location_searching),
+ label: "my location",
+ labelBackgroundColor: Colors.greenAccent,
+ backgroundColor: Colors.lightGreenAccent,
+ onTap: () {
+ _getCurrentLocation();
+ }),
+ SpeedDialChild(
+ child: Icon(Icons.person),
+ label: "Male",
+ labelBackgroundColor: Colors.purpleAccent,
+ backgroundColor: Colors.purpleAccent,
+ onTap: () {
+ _dialogBox.information(context, 'Male patients',
+ 'Sorry, this is not yet implemented');
+ }),
+ SpeedDialChild(
+ child: Icon(Icons.person_outline),
+ labelBackgroundColor: Colors.orangeAccent,
+ backgroundColor: Colors.orangeAccent,
+ label: "Female",
+ onTap: () {
+ _dialogBox.information(context, 'Female patients',
+ 'Sorry, this is not yet implemented');
+ }),
+ ],
+ ),
+ body: loadMap(),
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/login_screen.dart b/Flutter-App/lib/screens/login_screen.dart
new file mode 100644
index 0000000..5c12ea1
--- /dev/null
+++ b/Flutter-App/lib/screens/login_screen.dart
@@ -0,0 +1,102 @@
+import 'package:flutter/material.dart';
+import 'package:dengue_stop/components/rounded_button.dart';
+import 'package:dengue_stop/constants.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'main_screen.dart';
+import 'package:modal_progress_hud/modal_progress_hud.dart';
+import 'package:dengue_stop/components/dialog_box.dart';
+
+class LoginScreen extends StatefulWidget {
+ static const String id = "logins";
+
+ @override
+ _LoginScreenState createState() => _LoginScreenState();
+}
+
+class _LoginScreenState extends State {
+ bool showSpinner = false;
+ final _auth = FirebaseAuth.instance;
+ String email;
+ String password;
+
+ DialogBox _dialogBox = DialogBox();
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ body: ModalProgressHUD(
+ inAsyncCall: showSpinner,
+ child: Padding(
+ padding: EdgeInsets.symmetric(horizontal: 24.0),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ Flexible(
+ child: Hero(
+ tag: 'logo',
+ child: Container(
+ height: 200.0,
+ child: Image.asset('images/logo.png'),
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 48.0,
+ ),
+ TextField(
+ textAlign: TextAlign.center,
+ onChanged: (value) {
+ email = value;
+ },
+ decoration:
+ kTextFieldDecoration.copyWith(hintText: 'Enter your email'),
+ ),
+ SizedBox(
+ height: 8.0,
+ ),
+ TextField(
+ textAlign: TextAlign.center,
+ obscureText: true,
+ onChanged: (value) {
+ password = value;
+ },
+ decoration: kTextFieldDecoration.copyWith(
+ hintText: 'Enter your password'),
+ ),
+ SizedBox(
+ height: 24.0,
+ ),
+ RoundedButton(
+ title: 'Log In',
+ color: Colors.lightBlueAccent,
+ onPressed: () async {
+ setState(() {
+ showSpinner = true;
+ });
+ try {
+ final user = await _auth.signInWithEmailAndPassword(
+ email: email, password: password);
+ if (user != null) {
+ Navigator.pushNamed(context, MainScreen.id);
+ setState(() {
+ showSpinner = false;
+ });
+ }
+ } catch (e) {
+ _dialogBox.information(
+ context, 'Error', 'Invalid Username or Password');
+ setState(() {
+ showSpinner = false;
+ });
+ }
+ },
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/main_screen.dart b/Flutter-App/lib/screens/main_screen.dart
new file mode 100644
index 0000000..f9d43d7
--- /dev/null
+++ b/Flutter-App/lib/screens/main_screen.dart
@@ -0,0 +1,101 @@
+import 'package:curved_navigation_bar/curved_navigation_bar.dart';
+import 'package:dengue_stop/screens/home_screen.dart';
+import 'package:dengue_stop/screens/post_screen.dart';
+import 'package:dengue_stop/screens/report_screen.dart';
+import 'package:flutter/material.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'chat_screen.dart';
+import 'user_location_screen.dart';
+
+class MainScreen extends StatefulWidget {
+ static const String id = "main";
+
+ @override
+ _MainScreenState createState() => _MainScreenState();
+}
+
+class _MainScreenState extends State {
+ final _auth = FirebaseAuth.instance;
+ FirebaseUser loggedInUser;
+
+ void getCurrentUser() async {
+ try {
+ final user = await _auth.currentUser();
+ loggedInUser = user;
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ final PageController _pageController = PageController();
+
+ @override
+ void initState() {
+ super.initState();
+ getCurrentUser();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ body: PageView(
+ controller: _pageController,
+ children: [
+ HomeScreen(),
+ ReportScreen(),
+ PostScreen(),
+ ChatScreen(),
+ UserLocationScreen(),
+ ],
+ onPageChanged: (int index) {
+ setState(() {
+ _pageController.jumpToPage(index);
+ });
+ }),
+
+ bottomNavigationBar: CurvedNavigationBar(
+ color: Colors.blueAccent,
+ backgroundColor: Colors.white70,
+ buttonBackgroundColor: Colors.blueAccent,
+ height: 50,
+ index: 0,
+ items: [
+ Icon(
+ Icons.home,
+ size: 20,
+ color: Colors.white,
+ ),
+ Icon(
+ Icons.local_hospital,
+ size: 20,
+ color: Colors.white,
+ ),
+ Icon(
+ Icons.add,
+ size: 20,
+ color: Colors.white,
+ ),
+ Icon(
+ Icons.chat,
+ size: 20,
+ color: Colors.white,
+ ),
+ Icon(
+ Icons.my_location,
+ size: 20,
+ color: Colors.white,
+ ),
+ ],
+ animationDuration: Duration(milliseconds: 200),
+ animationCurve: Curves.bounceInOut,
+ onTap: (index) {
+ debugPrint("$index");
+
+ setState(() {
+ _pageController.jumpToPage(index);
+ });
+ },
+ ),
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/post_screen.dart b/Flutter-App/lib/screens/post_screen.dart
new file mode 100644
index 0000000..a37c58a
--- /dev/null
+++ b/Flutter-App/lib/screens/post_screen.dart
@@ -0,0 +1,85 @@
+import 'package:fab_circular_menu/fab_circular_menu.dart';
+import 'package:flutter/material.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+
+class PostScreen extends StatefulWidget {
+ static const String id = "posts";
+
+ @override
+ _PostScreenState createState() => _PostScreenState();
+}
+
+class _PostScreenState extends State {
+ final _auth = FirebaseAuth.instance;
+ FirebaseUser loggedInUser;
+
+ void getCurrentUser() async {
+ try {
+ final user = await _auth.currentUser();
+ loggedInUser = user;
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ getCurrentUser();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+
+ appBar: AppBar(
+ leading: null,
+ iconTheme: IconThemeData(
+ color: Colors.white, //change color here
+ ),
+ actions: [
+ IconButton(
+ icon: Icon(Icons.close),
+ onPressed: () {
+ _auth.signOut();
+ Navigator.pop(context);
+ }),
+ ],
+ title: Text('Posts',
+ style: TextStyle(
+ color: Colors.white,
+ )),
+ backgroundColor: Colors.blueAccent,
+ ),
+
+ floatingActionButton: FabCircularMenu(children: [
+ IconButton(
+ icon: Icon(Icons.perm_media),
+ onPressed: () {
+ print('Timeline');
+ }),
+ IconButton(
+ icon: Icon(Icons.notifications_active),
+ onPressed: () {
+ print('News');
+ }),
+ IconButton(
+ icon: Icon(Icons.photo_camera),
+ onPressed: () {
+ print('Food and Nutrians');
+ }),
+ IconButton(
+ icon: Icon(Icons.search),
+ onPressed: () {
+ print('Favorite');
+ }),
+ IconButton(
+ icon: Icon(Icons.supervisor_account),
+ onPressed: () {
+ print('News');
+ }),
+ ]),
+
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/registration_screen.dart b/Flutter-App/lib/screens/registration_screen.dart
new file mode 100644
index 0000000..80f789e
--- /dev/null
+++ b/Flutter-App/lib/screens/registration_screen.dart
@@ -0,0 +1,109 @@
+import 'package:flutter/material.dart';
+import 'package:dengue_stop/components/rounded_button.dart';
+import 'package:dengue_stop/constants.dart';
+import 'package:dengue_stop/screens/main_screen.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:modal_progress_hud/modal_progress_hud.dart';
+import 'package:dengue_stop/components/dialog_box.dart';
+
+class RegistrationScreen extends StatefulWidget {
+ static const String id = "registrations";
+
+ @override
+ _RegistrationScreenState createState() => _RegistrationScreenState();
+}
+
+class _RegistrationScreenState extends State {
+
+ bool showSpinner = false;
+ final _auth = FirebaseAuth.instance;
+ String email;
+ String password;
+
+ DialogBox _dialogBox = DialogBox();
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ body:ModalProgressHUD(
+ inAsyncCall: showSpinner,
+ child: Padding(
+ padding: EdgeInsets.symmetric(horizontal: 24.0),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ Flexible(
+ child: Hero(
+ tag: 'logo',
+ child: Container(
+ height: 200.0,
+ child: Image.asset('images/logo.png'),
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 48.0,
+ ),
+ TextField(
+ keyboardType: TextInputType.emailAddress,
+ textAlign: TextAlign.center,
+ onChanged: (value) {
+ email = value;
+ },
+ decoration: kTextFieldDecoration.copyWith(
+ hintText: 'Enter your email'),
+ ),
+ SizedBox(
+ height: 8.0,
+ ),
+ TextField(
+ textAlign: TextAlign.center,
+ obscureText: true,
+ onChanged: (value) {
+ password = value;
+ },
+ decoration: kTextFieldDecoration.copyWith(
+ hintText: 'Enter your password'),
+ ),
+ SizedBox(
+ height: 24.0,
+ ),
+ RoundedButton(
+ title: 'Register',
+ color: Colors.blueAccent,
+
+ onPressed: () async {
+ setState(() {
+ showSpinner = true;
+ });
+ try {
+ final newUser = await _auth
+ .createUserWithEmailAndPassword(
+ email: email, password: password);
+ if (newUser != null) {
+ Navigator.pushNamed(context, MainScreen.id);
+
+ setState(() {
+ showSpinner = false;
+ });
+ }
+ } catch (e) {
+ _dialogBox.information(
+ context, 'Error', 'Invalid Username or Username alredy exists. Make sure Password contains atleast 6 characters.');
+ setState(() {
+ showSpinner = false;
+ });
+ }
+ },
+ ),
+ ],
+ ),
+ ),
+ ),
+
+
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/report_screen.dart b/Flutter-App/lib/screens/report_screen.dart
new file mode 100644
index 0000000..abd082d
--- /dev/null
+++ b/Flutter-App/lib/screens/report_screen.dart
@@ -0,0 +1,57 @@
+import 'package:fab_circular_menu/fab_circular_menu.dart';
+import 'package:flutter/material.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:flutter_speed_dial/flutter_speed_dial.dart';
+
+class ReportScreen extends StatefulWidget {
+ static const String id = "report";
+
+ @override
+ _ReportScreenState createState() => _ReportScreenState();
+}
+
+class _ReportScreenState extends State {
+ final _auth = FirebaseAuth.instance;
+ FirebaseUser loggedInUser;
+
+ void getCurrentUser() async {
+ try {
+ final user = await _auth.currentUser();
+ loggedInUser = user;
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ getCurrentUser();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ leading: null,
+ iconTheme: IconThemeData(
+ color: Colors.white, //change color here
+ ),
+ actions: [
+ IconButton(
+ icon: Icon(Icons.close),
+ onPressed: () {
+ _auth.signOut();
+ Navigator.pop(context);
+ }),
+ ],
+ title: Text('Report',
+ style: TextStyle(
+ color: Colors.white,
+ )),
+ backgroundColor: Colors.blueAccent,
+ ),
+
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/user_location_screen.dart b/Flutter-App/lib/screens/user_location_screen.dart
new file mode 100644
index 0000000..4a6b37e
--- /dev/null
+++ b/Flutter-App/lib/screens/user_location_screen.dart
@@ -0,0 +1,166 @@
+import 'dart:async';
+import 'dart:typed_data';
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:dengue_stop/components/dialog_box.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_speed_dial/flutter_speed_dial.dart';
+import 'package:google_maps_flutter/google_maps_flutter.dart';
+import 'package:location/location.dart';
+
+class UserLocationScreen extends StatefulWidget {
+ static const String id = "user_location";
+
+ @override
+ _UserLocationScreenState createState() => _UserLocationScreenState();
+}
+
+class _UserLocationScreenState extends State {
+
+ DialogBox _dialogBox = DialogBox();
+
+ StreamSubscription _locationSubscription;
+ Location _locationTracker = Location();
+ Marker marker;
+ Circle circle;
+ GoogleMapController _controller;
+
+ var location;
+
+ static final CameraPosition initialLocation = CameraPosition(
+ target: LatLng(7.8731, 80.7718),
+ zoom: 8.4746,
+ );
+
+ Future getMarker() async {
+ ByteData byteData =
+ await DefaultAssetBundle.of(context).load("images/mosquito_icon.png");
+ return byteData.buffer.asUint8List();
+ }
+
+ void updateMarkerAndCircle(LocationData newLocalData, Uint8List imageData) {
+ LatLng latlng = LatLng(newLocalData.latitude, newLocalData.longitude);
+ this.setState(() {
+ marker = Marker(
+ markerId: MarkerId("user_location"),
+ position: latlng,
+ rotation: newLocalData.heading,
+ draggable: false,
+ zIndex: 2,
+ flat: true,
+ anchor: Offset(0.5, 0.5),
+ icon: BitmapDescriptor.fromBytes(imageData));
+ circle = Circle(
+ circleId: CircleId("mosquito"),
+ radius: newLocalData.accuracy,
+ zIndex: 1,
+ strokeColor: Colors.blue,
+ center: latlng,
+ fillColor: Colors.blue.withAlpha(70));
+ });
+ }
+
+ void addLocationToFierstore() {
+ Firestore.instance.collection('markers').add({
+ 'coords': GeoPoint(location.latitude, location.longitude),
+ 'place': "user location"
+ });
+ }
+
+ void getCurrentLocation() async {
+ try {
+ Uint8List imageData = await getMarker();
+ location = await _locationTracker.getLocation();
+ updateMarkerAndCircle(location, imageData);
+
+ if (_locationSubscription != null) {
+ _locationSubscription.cancel();
+ }
+ _locationSubscription =
+ _locationTracker.onLocationChanged().listen((newLocalData) {
+ if (_controller != null) {
+ _controller.animateCamera(CameraUpdate.newCameraPosition(
+ new CameraPosition(
+ bearing: 192.8334901395799,
+ target: LatLng(newLocalData.latitude, newLocalData.longitude),
+ tilt: 0,
+ zoom: 18.00)));
+
+ updateMarkerAndCircle(newLocalData, imageData);
+ }
+ });
+ } on PlatformException catch (e) {
+ if (e.code == 'PERMISSION_DENIED') {
+ debugPrint("Permission Denied");
+ }
+ }
+ }
+
+ @override
+ void dispose() {
+ if (_locationSubscription != null) {
+ _locationSubscription.cancel();
+ }
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ leading: null,
+ iconTheme: IconThemeData(
+ color: Colors.white, //change color here
+ ),
+ actions: [
+ IconButton(
+ icon: Icon(Icons.close),
+ onPressed: () {
+ Navigator.pop(context);
+ }),
+ ],
+ title: Text('Your Location',
+ style: TextStyle(
+ color: Colors.white,
+ )),
+ backgroundColor: Colors.blueAccent,
+ ),
+ body: GoogleMap(
+ mapType: MapType.hybrid,
+ initialCameraPosition: initialLocation,
+ markers: Set.of((marker != null) ? [marker] : []),
+ circles: Set.of((circle != null) ? [circle] : []),
+ onMapCreated: (GoogleMapController controller) {
+ _controller = controller;
+ },
+ ),
+ floatingActionButton: SpeedDial(
+ animatedIcon: AnimatedIcons.menu_close,
+ onOpen:(){
+ getCurrentLocation();
+ },
+ children: [
+ SpeedDialChild(
+ child: Icon(Icons.add_location),
+ backgroundColor: Colors.orange,
+ labelBackgroundColor: Colors.orangeAccent,
+ label: "Add Location",
+ onTap: () {
+ addLocationToFierstore();
+ _dialogBox.information(
+ context, 'Add Location', 'Your Location Added');
+ }),
+ SpeedDialChild(
+ child: Icon(Icons.add_location),
+ backgroundColor: Colors.red,
+ labelBackgroundColor: Colors.redAccent,
+ label: "Remove Location",
+ onTap: () {
+ _dialogBox.information(
+ context, 'Remove Location', 'Sorry, this is not yet implemented');
+ }),
+ ],
+ ),
+ );
+ }
+}
diff --git a/Flutter-App/lib/screens/welcome_screen.dart b/Flutter-App/lib/screens/welcome_screen.dart
new file mode 100644
index 0000000..581d0c2
--- /dev/null
+++ b/Flutter-App/lib/screens/welcome_screen.dart
@@ -0,0 +1,65 @@
+import 'package:flutter/material.dart';
+import 'login_screen.dart';
+import 'registration_screen.dart';
+import 'package:dengue_stop/components/rounded_button.dart';
+
+class WelcomeScreen extends StatefulWidget {
+ static const String id = "welcomes";
+
+ @override
+ _WelcomeScreenState createState() => _WelcomeScreenState();
+}
+
+class _WelcomeScreenState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ body: Padding(
+ padding: EdgeInsets.symmetric(horizontal: 24.0),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ Row(
+ children: [
+ Hero(
+ tag: 'logo',
+ child: Container(
+ child: Image.asset('images/logo.png'),
+ height: 60.0,
+ ),
+ ),
+ Text(
+ 'Dengue Stop',
+ style: TextStyle(
+ fontSize: 45.0,
+ fontWeight: FontWeight.w900,
+ ),
+ ),
+ ],
+ ),
+ SizedBox(
+ height: 48.0,
+ ),
+ RoundedButton(
+ title: 'Log In',
+ color: Colors.lightBlueAccent,
+ onPressed: () {
+ Navigator.pushNamed(context, LoginScreen.id);
+ },
+ ),
+ RoundedButton(
+ title: 'Register',
+ color: Colors.blueAccent,
+ onPressed: () {
+ Navigator.pushNamed(context, RegistrationScreen.id);
+ },
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
diff --git a/Flutter-App/pubspec.lock b/Flutter-App/pubspec.lock
new file mode 100644
index 0000000..dd1a156
--- /dev/null
+++ b/Flutter-App/pubspec.lock
@@ -0,0 +1,551 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ ansicolor:
+ dependency: transitive
+ description:
+ name: ansicolor
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.2"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.11"
+ 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.4.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.5"
+ cached_network_image:
+ dependency: transitive
+ description:
+ name: cached_network_image
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.0"
+ 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.11"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.14.11"
+ console_log_handler:
+ dependency: transitive
+ description:
+ name: console_log_handler
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.6"
+ 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.3"
+ curved_navigation_bar:
+ dependency: "direct main"
+ description:
+ name: curved_navigation_bar
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.3.2"
+ equatable:
+ dependency: transitive
+ description:
+ name: equatable
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.1"
+ extra_pedantic:
+ dependency: transitive
+ description:
+ name: extra_pedantic
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
+ fab_circular_menu:
+ dependency: "direct main"
+ description:
+ name: fab_circular_menu
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.0"
+ firebase:
+ dependency: transitive
+ description:
+ name: firebase
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "7.2.1"
+ firebase_auth:
+ dependency: "direct main"
+ description:
+ name: firebase_auth
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.14.0+9"
+ firebase_core:
+ dependency: "direct main"
+ description:
+ name: firebase_core
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.4.4+3"
+ firebase_core_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_core_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.4"
+ firebase_core_web:
+ dependency: transitive
+ description:
+ name: firebase_core_web
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.1+2"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_cache_manager:
+ dependency: transitive
+ description:
+ name: flutter_cache_manager
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.3"
+ flutter_image:
+ dependency: transitive
+ description:
+ name: flutter_image
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.0.0"
+ flutter_map:
+ dependency: "direct main"
+ description:
+ name: flutter_map
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.8.2"
+ flutter_plugin_android_lifecycle:
+ dependency: transitive
+ description:
+ name: flutter_plugin_android_lifecycle
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.6"
+ flutter_speed_dial:
+ dependency: "direct main"
+ description:
+ name: flutter_speed_dial
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.5"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_web_plugins:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ geodesy:
+ dependency: transitive
+ description:
+ name: geodesy
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.3.2"
+ geojson:
+ dependency: transitive
+ description:
+ name: geojson
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.9.1"
+ geolocator:
+ dependency: "direct main"
+ description:
+ name: geolocator
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "5.3.1"
+ geopoint:
+ dependency: transitive
+ description:
+ name: geopoint
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.7.1"
+ google_api_availability:
+ dependency: transitive
+ description:
+ name: google_api_availability
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.4"
+ google_maps_flutter:
+ dependency: "direct main"
+ description:
+ name: google_maps_flutter
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.5.25"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.0+4"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ 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"
+ intl:
+ dependency: transitive
+ description:
+ name: intl
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.16.1"
+ iso:
+ dependency: transitive
+ description:
+ name: iso
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.3.0"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.6.1+1"
+ latlong:
+ dependency: transitive
+ description:
+ name: latlong
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.6.1"
+ location:
+ dependency: "direct main"
+ description:
+ name: location
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.5.4"
+ location_permissions:
+ dependency: transitive
+ description:
+ name: location_permissions
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.5"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.11.4"
+ map_controller:
+ dependency: "direct main"
+ description:
+ name: map_controller
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.7.1"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.6"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.8"
+ modal_progress_hud:
+ dependency: "direct main"
+ description:
+ name: modal_progress_hud
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.3"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.6.4"
+ path_provider:
+ dependency: transitive
+ description:
+ name: path_provider
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.6.5"
+ path_provider_macos:
+ dependency: transitive
+ description:
+ name: path_provider_macos
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.0.4"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.1"
+ 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"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.2.1"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.2"
+ positioned_tap_detector:
+ dependency: transitive
+ description:
+ name: positioned_tap_detector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.3"
+ quiver:
+ dependency: transitive
+ description:
+ name: quiver
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.5"
+ rxdart:
+ dependency: transitive
+ description:
+ name: rxdart
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.23.1"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ slugify2:
+ dependency: transitive
+ description:
+ name: slugify2
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.2.1"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.5.5"
+ sqflite:
+ dependency: transitive
+ description:
+ name: sqflite
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.0"
+ sqflite_common:
+ dependency: transitive
+ description:
+ name: sqflite_common
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.0+1"
+ 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"
+ synchronized:
+ dependency: transitive
+ description:
+ name: synchronized
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.2.0"
+ 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.11"
+ transparent_image:
+ dependency: transitive
+ description:
+ name: transparent_image
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.0"
+ tuple:
+ dependency: transitive
+ description:
+ name: tuple
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.3"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.6"
+ uuid:
+ dependency: transitive
+ description:
+ name: uuid
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.4"
+ validate:
+ dependency: transitive
+ description:
+ name: validate
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.7.0"
+ 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"
+sdks:
+ dart: ">=2.7.0 <3.0.0"
+ flutter: ">=1.12.13+hotfix.6 <2.0.0"
diff --git a/Flutter-App/pubspec.yaml b/Flutter-App/pubspec.yaml
new file mode 100644
index 0000000..19e66bc
--- /dev/null
+++ b/Flutter-App/pubspec.yaml
@@ -0,0 +1,36 @@
+name: dengue_stop
+description: A new Flutter application for stop dengue
+
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.1.0<3.0.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+
+ cupertino_icons: ^0.1.2
+ firebase_core: ^0.4.0+9
+ firebase_auth: ^0.14.0+5
+ cloud_firestore: ^0.12.9+5
+ modal_progress_hud: ^0.1.3
+ curved_navigation_bar: ^0.3.2
+ google_maps_flutter: ^0.5.25
+# geoflutterfire: ^2.0.3+2
+ location: ^2.3.5
+ flutter_map: ^0.8.2
+ flutter_speed_dial: ^1.2.5
+ fab_circular_menu: ^1.0.0
+
+ geolocator: ^5.3.1
+ map_controller: ^0.7.1
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+
+flutter:
+ uses-material-design: true
+
+ assets:
+ - images/