├── .gitignore ├── .metadata ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Logo ├── Logo.png └── Logo.svg ├── README.md ├── UI Design Draft ├── Authentication.png └── Signin.png ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── yousafe │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── api_repository.dart ├── main.dart ├── screens │ ├── contact_screen.dart │ ├── emergency_screen.dart │ ├── login_screen.dart │ └── screen.dart └── widgets │ └── widget.dart ├── pubspec.lock ├── pubspec.yaml ├── test └── widget_test.dart └── tutorials.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Table of Contents 2 | 3 | - [Purpose](#purpose) 4 | - [Open Source Citizenship](#open-source-citizenship) 5 | - [Conflict resolution](#conflict-resolution) 6 | - [Questions](#questions) 7 | - [Expected Behavior](#expected-behavior) 8 | - [Unacceptable Behavior](#unacceptable-behavior) 9 | - [Consequences of Unacceptable Behavior](#consequences-of-unacceptable-behavior) 10 | - [Reporting Guidelines](#reporting-guidelines) 11 | - [Contact Information](#contact-information) 12 | - [Scope](#scope) 13 | - [License and attribution](#license-and-attribution) 14 | 15 | ## 1. Purpose 16 | 17 | * The primary goal is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. 18 | * As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, 19 | sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). 20 | * This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. 21 | * We invite all those who participate in open source contributions to help us create safe and positive experiences for everyone. 22 | 23 | ## 2. Open Source Citizenship 24 | 25 | * A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging 26 | participants to recognize and strengthen the relationships between our actions and their effects on our community. 27 | * Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. 28 | * If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to 29 | contribute to the fullest extent, we want to know. 30 | 31 | ## 3. Conflict resolution 32 | 33 | * When multiple contributors disagree on the direction for a particular patch or the general direction of the project, the conflict should be resolved by communication. 34 | The people who disagree should get together, try to understand each other's points of view, and work to find a design that addresses everyone's concerns. This is 35 | usually sufficient to resolve issues. If you cannot come to an agreement, ask for the advice of one of the mantainers of the team. 36 | * Be wary of agreement by attrition, where one person argues a point repeatedly until other participants give up in the interests of moving on. 37 | This is not conflict resolution, as it does not address everyone's concerns. 38 | * Be wary of agreement by compromise, where two good competing solutions are merged into one mediocre solution. 39 | * A conflict is addressed when the participants agree that the final solution is _better_ than all the conflicting proposals. 40 | Sometimes the solution is more work than either of the proposals. 41 | 42 | ## 4. Questions 43 | * Never be hisitent to ask questions, doubts or any tiny/huge queries regarding any content you deal with. 44 | * Not everyone is an expert in all the domains and we all keep learning by observing, asking questions and making mistakes and learning from those and not repeating them. 45 | * Once you find your answers amd get your queries resolved, try to document it so that some other wandering member does not climb the same old mountain of queries you dealt with. 46 | * This helps to save time and will help you too when you come accross such documentations in future which will save your day hopefully. 47 | 48 | 49 | ## 5. Expected Behavior 50 | 51 | The following behaviors are expected and requested of all contributing members: 52 | 53 | * Professional and respectful towards all the members, their identity, their culture, and their work. 54 | * Be kind. Be courteous. Be welcoming. 55 | * Listen. Consider and acknowledge people's points before responding. 56 | * Participate in an authentic and active way. In doing so, you can contribute to the health and longevity of this project. 57 | * Exercise consideration and respect in your speech and actions. 58 | * Attempt collaboration before conflict. Always. 59 | * Refrain from demeaning, discriminatory, or harassing behavior and speech. 60 | * Be mindful of your surroundings and of your fellow participants. 61 | * Alert the project maintainers/admins if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. 62 | 63 | ## 6. Unacceptable Behavior 64 | 65 | The following behaviors are considered harassment and are strictly unacceptable: 66 | 67 | * Deliberate intimidation, stalking or following (online or in person). 68 | * Violence, threats of violence or violent language directed against another person. 69 | * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. 70 | * Posting or displaying sexually explicit or violent material. 71 | * Posting or threatening to post other people’s personally identifying information ("doxing"). 72 | * Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. 73 | * Inappropriate photography or recording. 74 | * Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. 75 | * Advocating for, or encouraging, any of the above behavior. 76 | * Sustained disruption of community events, including talks and presentations. 77 | 78 | ## 7. Consequences of Unacceptable Behavior 79 | 80 | * Unacceptable behavior from any contributing member, including maintainers, admins, sponsors and those with decision-making authority, will not be tolerated. 81 | * Anyone asked to stop unacceptable behavior is expected to comply with an immediate effect. 82 | * If a member engages in unacceptable behavior, the maintainers/admins may take any action they deem appropriate, 83 | up to and including a temporary ban or permanent expulsion from the project without warning. 84 | 85 | ## 8. Reporting Guidelines 86 | 87 | * If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a project maintainer/admin by emailing at the below shared email ids. 88 | 89 | ## 9. Scope 90 | 91 | * We expect all the contributors/participants/sponsors/guests to abide by this Code of Conduct in all situations and 92 | venues: online and in-person–as well as in all one-on-one communications pertaining to community business. 93 | 94 | ## 10. Contact Information 95 | * Should you experience anything that makes you feel unwelcome in the YouSafe's 96 | community, please do not hesitate to contact on the below mentioned email id: 97 | - [Suvranil](mailto:suvranilduttabiswas@gmail.com), 98 | - [Anushka](mailto:shuklaannushka@gmail.com) 99 | - [Manish](mailto:manishbarnwal725@gmail.com) 100 | 101 | ## 11. License and attribution 102 | 103 | * This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). 104 | * Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and 105 | the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) 106 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to YouSafe: 2 | 3 | See also: [Code of Conduct](CODE_OF_CONDUCT.md) 4 | 5 | ## Welcome 6 | 7 | We are glad to have you join our team. Everyone is welcome to contribute via pull requests, create issues on GitHub, help others in the community, especially beginners by explaining to them stuff that they have doubts in, to find bugs and fix them, aid in our Documentation, sharing your idea and designs, or in any other way. 8 | 9 | 10 | We would request you to cooperate with our maintainers and comply with the revisions they request and maintain the code of conduct while working on this project. 11 | 12 | #### Steps: 13 | 14 | ![Steps](https://media.giphy.com/media/o5BzNDDFQnepi/giphy.gif) 15 | 16 | 17 | **1.** Fork [this](https://github.com/neil-dev/YouSafe) repository. 18 | 19 | **2.** Fire up the terminal or Git Bash. 20 | 21 | **3.** Navigate to the folder/directory where you want to download the project. 22 | 23 | ```terminal 24 | cd DIRECTORY_PATH 25 | ``` 26 | 27 | **4.** Clone the forked repository. 28 | 29 | ```terminal 30 | git clone https://github.com//YouSafe 31 | ``` 32 | 33 | **5.** Navigate to the project directory. 34 | 35 | ```terminal 36 | cd YouSafe 37 | ``` 38 | 39 | **6.** Create a new branch. 40 | 41 | ```terminal 42 | git checkout -b 43 | ``` 44 | 45 | **7.** Make changes in source code. 46 | 47 | ![changes](https://media.giphy.com/media/QNFhOolVeCzPQ2Mx85/200w_d.gif) 48 | 49 | 50 | **8.** Commit your changes. 51 | ```terminal 52 | git add . 53 | git commit -m "COMMIT MESSAGE" 54 | ``` 55 | 56 | **9.** Push your local branch to the remote repository. 57 | ```terminal 58 | git push -u origin 59 | ``` 60 | 61 | **10.** Create a Pull Request! 62 | 63 | 64 | Finally, go to your repository in browser and click on `compare and pull requests`. 65 | Then add a title and description to your pull request that explains your precious effort. 66 | 67 | click on `Compare and Pull Request` 68 | 69 | **Congratulations!** :boom: Sit and relax, you've made your contribution to project. 70 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020-present Neil 4 | 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /Logo/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/Logo/Logo.png -------------------------------------------------------------------------------- /Logo/Logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

YouSafe

2 |

Logo
3 |

4 | 5 | PRs Welcome 6 | GitHub Forks 7 | GitHub pull requests 8 | GitHub issues 9 | GitHub issues 10 |

11 |
12 | 13 | 14 | **Problem Statement:** When there is no one to go to in times of danger or trouble, there is nowhere to seek help from, like the police or any force of authority that might help in the situation. 15 | 16 | ### Why do we need this App? 17 | - We have seen a lot of times the crimes happening while travelling alone, hence it becomes a necessity of the situation that we need something that gives safety to us and assurance to our loved ones that we are safe and sound and can seek help from them whenever needed. 18 | - We are using flutter to make this application so we are solving the problem of making separate applications for ios and android users 19 | - Many existing applications are either having issues which we got to know during the research like the application do not have an impressive and user-friendly UI, when sending SMSs it charges money, there are bugs because of which it becomes difficult to use,the application asks for too much of user information. 20 | 21 | > _**Our Mission: Everyone should feel safe on having this App on their Smart phones whenever they step out of their houses.**_ 22 | 23 | ### UI Templates 24 | 25 |

26 | Logo 27 | Logo 28 | Logo 29 |

30 | 31 | ### Features :round_pushpin: 32 | - Panic Button that triggers action by voice command, to send SOS :sos: alert to the contacts with phiysical location (GPS). 33 | - Share location and let your family follow your remote location helps Keeping your contacts informed. 34 | - A voice recording feature with a certain combination in the background with cloud backup and no traces in the front, in case someone is being threatened. 35 | - Call with single touch or voice command when in emergency. 36 | - The app should specify how long you want them to track your GPS location until you check in your intended destination. If fail to send an emergency alert to choosen contact. 37 | - The camera turns on automatically and starts recording. 38 | 39 | **Note:** Feel free to propose any new feature request by creating a new issue. 😊 40 | 41 | Before you start contributing, check out the [Code of Conduct](CODE_OF_CONDUCT.md). 42 | 43 | Also, read the [contribution guidelines](CONTRIBUTING.md) to get started with your contributions. 44 | 45 | ## Getting started :rocket: 46 | 47 | #### Prerequisites 48 | 49 | - [**Install Flutter**](https://flutter.dev/docs/get-started/install) 50 | - [**Set up an editor**](https://flutter.dev/docs/get-started/editor) 51 | 52 | 53 | #### Building and running 54 | 55 | First, make sure you have a local copy of this repository. Steps 1 – 5 of the [contribution guidelines](CONTRIBUTING.md) are one way to accomplish this. 56 | 57 | Next, run `flutter pub get` from the project root to install dependencies. 58 | 59 | All that's left is to open the project in your editor of choice! 60 | 61 | If your editor doesn't support or detect appropriate build configurations for the project, you can build and run it manually from the terminal. Note that this has to be run form the project root. 62 | 63 | ```sh 64 | flutter run # runs a debug build 65 | ``` 66 | 67 | You can read more about build modes [here](https://flutter.dev/docs/testing/build-modes). 68 | 69 | Feel free to reach out to us for any concern you may also join our [telegram channel:link:](https://t.me/Open_Codeyard) for better conversation. 70 | 71 | ### License: 72 | The content of this repository is bound by [MIT](LICENSE) License. 73 | -------------------------------------------------------------------------------- /UI Design Draft/Authentication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/UI Design Draft/Authentication.png -------------------------------------------------------------------------------- /UI Design Draft/Signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/UI Design Draft/Signin.png -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 33 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | applicationId "com.ocy.yousafe" 41 | minSdkVersion 21 42 | targetSdkVersion 33 43 | versionCode flutterVersionCode.toInteger() 44 | versionName flutterVersionName 45 | } 46 | 47 | buildTypes { 48 | release { 49 | // TODO: Add your own signing config for the release build. 50 | // Signing with the debug keys for now, so `flutter run --release` works. 51 | signingConfig signingConfigs.debug 52 | } 53 | } 54 | } 55 | 56 | flutter { 57 | source '../..' 58 | } 59 | 60 | dependencies { 61 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 62 | } 63 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 22 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/yousafe/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.ocy.yousafe 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 97 | ); 98 | path = Runner; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 97C146ED1CF9000F007C117D /* Runner */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 107 | buildPhases = ( 108 | 9740EEB61CF901F6004384FC /* Run Script */, 109 | 97C146EA1CF9000F007C117D /* Sources */, 110 | 97C146EB1CF9000F007C117D /* Frameworks */, 111 | 97C146EC1CF9000F007C117D /* Resources */, 112 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 114 | ); 115 | buildRules = ( 116 | ); 117 | dependencies = ( 118 | ); 119 | name = Runner; 120 | productName = Runner; 121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 122 | productType = "com.apple.product-type.application"; 123 | }; 124 | /* End PBXNativeTarget section */ 125 | 126 | /* Begin PBXProject section */ 127 | 97C146E61CF9000F007C117D /* Project object */ = { 128 | isa = PBXProject; 129 | attributes = { 130 | LastUpgradeCheck = 1020; 131 | ORGANIZATIONNAME = ""; 132 | TargetAttributes = { 133 | 97C146ED1CF9000F007C117D = { 134 | CreatedOnToolsVersion = 7.3.1; 135 | LastSwiftMigration = 1100; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 140 | compatibilityVersion = "Xcode 9.3"; 141 | developmentRegion = en; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | Base, 146 | ); 147 | mainGroup = 97C146E51CF9000F007C117D; 148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 97C146ED1CF9000F007C117D /* Runner */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 97C146EC1CF9000F007C117D /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXShellScriptBuildPhase section */ 172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 173 | isa = PBXShellScriptBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | ); 177 | inputPaths = ( 178 | ); 179 | name = "Thin Binary"; 180 | outputPaths = ( 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 185 | }; 186 | 9740EEB61CF901F6004384FC /* Run Script */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "Run Script"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 199 | }; 200 | /* End PBXShellScriptBuildPhase section */ 201 | 202 | /* Begin PBXSourcesBuildPhase section */ 203 | 97C146EA1CF9000F007C117D /* Sources */ = { 204 | isa = PBXSourcesBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | /* End PBXSourcesBuildPhase section */ 213 | 214 | /* Begin PBXVariantGroup section */ 215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 216 | isa = PBXVariantGroup; 217 | children = ( 218 | 97C146FB1CF9000F007C117D /* Base */, 219 | ); 220 | name = Main.storyboard; 221 | sourceTree = ""; 222 | }; 223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 224 | isa = PBXVariantGroup; 225 | children = ( 226 | 97C147001CF9000F007C117D /* Base */, 227 | ); 228 | name = LaunchScreen.storyboard; 229 | sourceTree = ""; 230 | }; 231 | /* End PBXVariantGroup section */ 232 | 233 | /* Begin XCBuildConfiguration section */ 234 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 235 | isa = XCBuildConfiguration; 236 | buildSettings = { 237 | ALWAYS_SEARCH_USER_PATHS = NO; 238 | CLANG_ANALYZER_NONNULL = YES; 239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 240 | CLANG_CXX_LIBRARY = "libc++"; 241 | CLANG_ENABLE_MODULES = YES; 242 | CLANG_ENABLE_OBJC_ARC = YES; 243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 244 | CLANG_WARN_BOOL_CONVERSION = YES; 245 | CLANG_WARN_COMMA = YES; 246 | CLANG_WARN_CONSTANT_CONVERSION = YES; 247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 249 | CLANG_WARN_EMPTY_BODY = YES; 250 | CLANG_WARN_ENUM_CONVERSION = YES; 251 | CLANG_WARN_INFINITE_RECURSION = YES; 252 | CLANG_WARN_INT_CONVERSION = YES; 253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 258 | CLANG_WARN_STRICT_PROTOTYPES = YES; 259 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 260 | CLANG_WARN_UNREACHABLE_CODE = YES; 261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 263 | COPY_PHASE_STRIP = NO; 264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 265 | ENABLE_NS_ASSERTIONS = NO; 266 | ENABLE_STRICT_OBJC_MSGSEND = YES; 267 | GCC_C_LANGUAGE_STANDARD = gnu99; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 271 | GCC_WARN_UNDECLARED_SELECTOR = YES; 272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 273 | GCC_WARN_UNUSED_FUNCTION = YES; 274 | GCC_WARN_UNUSED_VARIABLE = YES; 275 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 276 | MTL_ENABLE_DEBUG_INFO = NO; 277 | SDKROOT = iphoneos; 278 | SUPPORTED_PLATFORMS = iphoneos; 279 | TARGETED_DEVICE_FAMILY = "1,2"; 280 | VALIDATE_PRODUCT = YES; 281 | }; 282 | name = Profile; 283 | }; 284 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 285 | isa = XCBuildConfiguration; 286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 287 | buildSettings = { 288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 289 | CLANG_ENABLE_MODULES = YES; 290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 291 | ENABLE_BITCODE = NO; 292 | FRAMEWORK_SEARCH_PATHS = ( 293 | "$(inherited)", 294 | "$(PROJECT_DIR)/Flutter", 295 | ); 296 | INFOPLIST_FILE = Runner/Info.plist; 297 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 298 | LIBRARY_SEARCH_PATHS = ( 299 | "$(inherited)", 300 | "$(PROJECT_DIR)/Flutter", 301 | ); 302 | PRODUCT_BUNDLE_IDENTIFIER = com.ocy.yousafe; 303 | PRODUCT_NAME = "$(TARGET_NAME)"; 304 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 305 | SWIFT_VERSION = 5.0; 306 | VERSIONING_SYSTEM = "apple-generic"; 307 | }; 308 | name = Profile; 309 | }; 310 | 97C147031CF9000F007C117D /* Debug */ = { 311 | isa = XCBuildConfiguration; 312 | buildSettings = { 313 | ALWAYS_SEARCH_USER_PATHS = NO; 314 | CLANG_ANALYZER_NONNULL = YES; 315 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 316 | CLANG_CXX_LIBRARY = "libc++"; 317 | CLANG_ENABLE_MODULES = YES; 318 | CLANG_ENABLE_OBJC_ARC = YES; 319 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 320 | CLANG_WARN_BOOL_CONVERSION = YES; 321 | CLANG_WARN_COMMA = YES; 322 | CLANG_WARN_CONSTANT_CONVERSION = YES; 323 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 325 | CLANG_WARN_EMPTY_BODY = YES; 326 | CLANG_WARN_ENUM_CONVERSION = YES; 327 | CLANG_WARN_INFINITE_RECURSION = YES; 328 | CLANG_WARN_INT_CONVERSION = YES; 329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 334 | CLANG_WARN_STRICT_PROTOTYPES = YES; 335 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 336 | CLANG_WARN_UNREACHABLE_CODE = YES; 337 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 339 | COPY_PHASE_STRIP = NO; 340 | DEBUG_INFORMATION_FORMAT = dwarf; 341 | ENABLE_STRICT_OBJC_MSGSEND = YES; 342 | ENABLE_TESTABILITY = YES; 343 | GCC_C_LANGUAGE_STANDARD = gnu99; 344 | GCC_DYNAMIC_NO_PIC = NO; 345 | GCC_NO_COMMON_BLOCKS = YES; 346 | GCC_OPTIMIZATION_LEVEL = 0; 347 | GCC_PREPROCESSOR_DEFINITIONS = ( 348 | "DEBUG=1", 349 | "$(inherited)", 350 | ); 351 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 352 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 353 | GCC_WARN_UNDECLARED_SELECTOR = YES; 354 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 355 | GCC_WARN_UNUSED_FUNCTION = YES; 356 | GCC_WARN_UNUSED_VARIABLE = YES; 357 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 358 | MTL_ENABLE_DEBUG_INFO = YES; 359 | ONLY_ACTIVE_ARCH = YES; 360 | SDKROOT = iphoneos; 361 | TARGETED_DEVICE_FAMILY = "1,2"; 362 | }; 363 | name = Debug; 364 | }; 365 | 97C147041CF9000F007C117D /* Release */ = { 366 | isa = XCBuildConfiguration; 367 | buildSettings = { 368 | ALWAYS_SEARCH_USER_PATHS = NO; 369 | CLANG_ANALYZER_NONNULL = YES; 370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 371 | CLANG_CXX_LIBRARY = "libc++"; 372 | CLANG_ENABLE_MODULES = YES; 373 | CLANG_ENABLE_OBJC_ARC = YES; 374 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 375 | CLANG_WARN_BOOL_CONVERSION = YES; 376 | CLANG_WARN_COMMA = YES; 377 | CLANG_WARN_CONSTANT_CONVERSION = YES; 378 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 379 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 380 | CLANG_WARN_EMPTY_BODY = YES; 381 | CLANG_WARN_ENUM_CONVERSION = YES; 382 | CLANG_WARN_INFINITE_RECURSION = YES; 383 | CLANG_WARN_INT_CONVERSION = YES; 384 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 385 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 386 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 387 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 389 | CLANG_WARN_STRICT_PROTOTYPES = YES; 390 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 391 | CLANG_WARN_UNREACHABLE_CODE = YES; 392 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 393 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 394 | COPY_PHASE_STRIP = NO; 395 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 396 | ENABLE_NS_ASSERTIONS = NO; 397 | ENABLE_STRICT_OBJC_MSGSEND = YES; 398 | GCC_C_LANGUAGE_STANDARD = gnu99; 399 | GCC_NO_COMMON_BLOCKS = YES; 400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 402 | GCC_WARN_UNDECLARED_SELECTOR = YES; 403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 404 | GCC_WARN_UNUSED_FUNCTION = YES; 405 | GCC_WARN_UNUSED_VARIABLE = YES; 406 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 407 | MTL_ENABLE_DEBUG_INFO = NO; 408 | SDKROOT = iphoneos; 409 | SUPPORTED_PLATFORMS = iphoneos; 410 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 411 | TARGETED_DEVICE_FAMILY = "1,2"; 412 | VALIDATE_PRODUCT = YES; 413 | }; 414 | name = Release; 415 | }; 416 | 97C147061CF9000F007C117D /* Debug */ = { 417 | isa = XCBuildConfiguration; 418 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 419 | buildSettings = { 420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 421 | CLANG_ENABLE_MODULES = YES; 422 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 423 | ENABLE_BITCODE = NO; 424 | FRAMEWORK_SEARCH_PATHS = ( 425 | "$(inherited)", 426 | "$(PROJECT_DIR)/Flutter", 427 | ); 428 | INFOPLIST_FILE = Runner/Info.plist; 429 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 430 | LIBRARY_SEARCH_PATHS = ( 431 | "$(inherited)", 432 | "$(PROJECT_DIR)/Flutter", 433 | ); 434 | PRODUCT_BUNDLE_IDENTIFIER = com.ocy.yousafe; 435 | PRODUCT_NAME = "$(TARGET_NAME)"; 436 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 437 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 438 | SWIFT_VERSION = 5.0; 439 | VERSIONING_SYSTEM = "apple-generic"; 440 | }; 441 | name = Debug; 442 | }; 443 | 97C147071CF9000F007C117D /* Release */ = { 444 | isa = XCBuildConfiguration; 445 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 446 | buildSettings = { 447 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 448 | CLANG_ENABLE_MODULES = YES; 449 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 450 | ENABLE_BITCODE = NO; 451 | FRAMEWORK_SEARCH_PATHS = ( 452 | "$(inherited)", 453 | "$(PROJECT_DIR)/Flutter", 454 | ); 455 | INFOPLIST_FILE = Runner/Info.plist; 456 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 457 | LIBRARY_SEARCH_PATHS = ( 458 | "$(inherited)", 459 | "$(PROJECT_DIR)/Flutter", 460 | ); 461 | PRODUCT_BUNDLE_IDENTIFIER = com.ocy.yousafe; 462 | PRODUCT_NAME = "$(TARGET_NAME)"; 463 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 464 | SWIFT_VERSION = 5.0; 465 | VERSIONING_SYSTEM = "apple-generic"; 466 | }; 467 | name = Release; 468 | }; 469 | /* End XCBuildConfiguration section */ 470 | 471 | /* Begin XCConfigurationList section */ 472 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 473 | isa = XCConfigurationList; 474 | buildConfigurations = ( 475 | 97C147031CF9000F007C117D /* Debug */, 476 | 97C147041CF9000F007C117D /* Release */, 477 | 249021D3217E4FDB00AE95B9 /* Profile */, 478 | ); 479 | defaultConfigurationIsVisible = 0; 480 | defaultConfigurationName = Release; 481 | }; 482 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 483 | isa = XCConfigurationList; 484 | buildConfigurations = ( 485 | 97C147061CF9000F007C117D /* Debug */, 486 | 97C147071CF9000F007C117D /* Release */, 487 | 249021D4217E4FDB00AE95B9 /* Profile */, 488 | ); 489 | defaultConfigurationIsVisible = 0; 490 | defaultConfigurationName = Release; 491 | }; 492 | /* End XCConfigurationList section */ 493 | }; 494 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 495 | } 496 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | 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. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | yousafe 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | NSContactsUsageDescription 31 | This app requires contacts access to function properly. 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/api_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:geolocator/geolocator.dart'; 2 | import 'package:mailer/mailer.dart'; 3 | import 'package:mailer/smtp_server.dart'; 4 | 5 | 6 | 7 | Future emergencyButtonPressed() async { 8 | final String username = 'hashtagsteam1@gmail.com'; 9 | final String password = 'hashtags2020'; 10 | 11 | final smtpServer = gmail(username, password); 12 | 13 | // TODO: retrieve list of contacts. 14 | final contacts = ['9674429152', '9433285155']; 15 | // TODO: retrieve primary contact. 16 | final primaryContact = '9674429152'; 17 | 18 | final Position _currentPosition = 19 | await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high); 20 | 21 | // TODO: retrieve the name of the current user. 22 | final String messageText = 23 | 'User needs your help!!!\n\nLocate him at https://www.google.com/maps/place/${_currentPosition.latitude},${_currentPosition.longitude}?zoom=14'; 24 | print(messageText); 25 | 26 | final message = Message() 27 | ..from = Address(username, 'YouSafe') 28 | ..recipients.add('suvranilduttabiswas@gmail.com') 29 | ..subject = 'Alert for Rescue' 30 | ..text = messageText; 31 | 32 | try { 33 | final sendReport = await send(message, smtpServer); 34 | print('Message sent: ' + sendReport.toString()); 35 | return true; 36 | } on MailerException catch (e) { 37 | print(e); 38 | print('Message not sent.'); 39 | for (var p in e.problems) { 40 | print('Problem: ${p.code}: ${p.msg}'); 41 | } 42 | return false; 43 | } 44 | 45 | // FlutterPhoneState.startPhoneCall("9433285155"); 46 | } 47 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:yousafe/screens/login_screen.dart'; 3 | 4 | void main() async { 5 | WidgetsFlutterBinding.ensureInitialized(); 6 | runApp(const YouSafeApp()); 7 | } 8 | 9 | class YouSafeApp extends StatelessWidget { 10 | const YouSafeApp({Key? key}) : super(key: key); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return MaterialApp( 15 | debugShowCheckedModeBanner: false, 16 | home: LoginScreen(), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/screens/contact_screen.dart: -------------------------------------------------------------------------------- 1 | // import 'package:flutter/material.dart'; 2 | // import 'package:contacts_service/contacts_service.dart'; 3 | 4 | // class ContactScreen extends StatefulWidget { 5 | // @override 6 | // _ContactScreenState createState() => _ContactScreenState(); 7 | // } 8 | 9 | // class _ContactScreenState extends State { 10 | // List contacts = []; 11 | // List contactsFiltered = []; 12 | // Map contactsColorMap = new Map(); 13 | // TextEditingController searchController = new TextEditingController(); 14 | 15 | // @override 16 | // void initState() { 17 | // super.initState(); 18 | // getAllContacts(); 19 | // searchController.addListener(() { 20 | // filterContacts(); 21 | // }); 22 | // } 23 | 24 | // String flattenPhoneNumber(String phoneStr) { 25 | // return phoneStr.replaceAllMapped(RegExp(r'^(\+)|\D'), (Match m) { 26 | // return m[0] == "+" ? "+" : ""; 27 | // }); 28 | // } 29 | 30 | // getAllContacts() async { 31 | // List colors = [Colors.green, Colors.indigo, Colors.yellow, Colors.orange]; 32 | // int colorIndex = 0; 33 | // List _contacts = (await ContactsService.getContacts()).toList(); 34 | // _contacts.forEach((contact) { 35 | // Color baseColor = colors[colorIndex]; 36 | // contactsColorMap[contact.displayName] = baseColor; 37 | // colorIndex++; 38 | // if (colorIndex == colors.length) { 39 | // colorIndex = 0; 40 | // } 41 | // }); 42 | // setState(() { 43 | // contacts = _contacts; 44 | // }); 45 | // } 46 | 47 | // filterContacts() { 48 | // List _contacts = []; 49 | // _contacts.addAll(contacts); 50 | // if (searchController.text.isNotEmpty) { 51 | // _contacts.retainWhere((contact) { 52 | // String searchTerm = searchController.text.toLowerCase(); 53 | // String searchTermFlatten = flattenPhoneNumber(searchTerm); 54 | // String contactName = contact.displayName.toLowerCase(); 55 | // bool nameMatches = contactName.contains(searchTerm); 56 | // if (nameMatches == true) { 57 | // return true; 58 | // } 59 | 60 | // if (searchTermFlatten.isEmpty) { 61 | // return false; 62 | // } 63 | 64 | // var phone = contact.phones.firstWhere((phn) { 65 | // String phnFlattened = flattenPhoneNumber(phn.value); 66 | // return phnFlattened.contains(searchTermFlatten); 67 | // }, orElse: () => null); 68 | 69 | // return phone != null; 70 | // }); 71 | // } 72 | // setState(() { 73 | // contactsFiltered = _contacts; 74 | // }); 75 | // } 76 | 77 | // @override 78 | // Widget build(BuildContext context) { 79 | // bool isSearching = searchController.text.isNotEmpty; 80 | // return Scaffold( 81 | // appBar: AppBar( 82 | // title: Text('Contact Screen'), 83 | // ), 84 | // body: Container( 85 | // padding: EdgeInsets.all(20), 86 | // child: Column( 87 | // children: [ 88 | // Container( 89 | // child: TextField( 90 | // controller: searchController, 91 | // decoration: InputDecoration( 92 | // labelText: 'Search', 93 | // border: new OutlineInputBorder( 94 | // borderSide: new BorderSide( 95 | // color: Theme.of(context).primaryColor 96 | // ) 97 | // ), 98 | // prefixIcon: Icon( 99 | // Icons.search, 100 | // color: Theme.of(context).primaryColor 101 | // ) 102 | // ), 103 | // ), 104 | // ), 105 | // Expanded( 106 | // child: ListView.builder( 107 | // shrinkWrap: true, 108 | // itemCount: isSearching == true ? contactsFiltered.length : contacts.length, 109 | // itemBuilder: (context, index) { 110 | // Contact contact = isSearching == true ? contactsFiltered[index] : contacts[index]; 111 | 112 | // var baseColor = contactsColorMap[contact.displayName] as dynamic; 113 | 114 | // Color color1 = baseColor[800]; 115 | // Color color2 = baseColor[400]; 116 | // return ListTile( 117 | // title: Text(contact.displayName), 118 | // subtitle: Text( 119 | // contact.phones.length > 0 ? contact.phones.elementAt(0).value : '' 120 | // ), 121 | // leading: (contact.avatar != null && contact.avatar.length > 0) ? 122 | // CircleAvatar( 123 | // backgroundImage: MemoryImage(contact.avatar), 124 | // ) : 125 | // Container( 126 | // decoration: BoxDecoration( 127 | // shape: BoxShape.circle, 128 | // gradient: LinearGradient( 129 | // colors: [ 130 | // color1, 131 | // color2, 132 | // ], 133 | // begin: Alignment.bottomLeft, 134 | // end: Alignment.topRight 135 | // ) 136 | // ), 137 | // child: CircleAvatar( 138 | // child: Text( 139 | // contact.initials(), 140 | // style: TextStyle( 141 | // color: Colors.white 142 | // ) 143 | // ), 144 | // backgroundColor: Colors.transparent 145 | // ) 146 | // ) 147 | // ); 148 | // }, 149 | // ), 150 | // ) 151 | // ], 152 | // ), 153 | // ), 154 | // ); 155 | // } 156 | // } 157 | -------------------------------------------------------------------------------- /lib/screens/emergency_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:yousafe/api_repository.dart'; 3 | 4 | class EmergencyScreen extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Scaffold( 8 | appBar: AppBar( 9 | title: Text('Emergency'), 10 | ), 11 | body: Center( 12 | child: ElevatedButton( 13 | style: ElevatedButton.styleFrom( 14 | padding: EdgeInsets.all(15), 15 | backgroundColor: Colors.red, 16 | shape: CircleBorder(), 17 | ), 18 | child: Icon( 19 | Icons.call, 20 | color: Colors.white, 21 | size: 36, 22 | ), 23 | onPressed: () async { 24 | final status = await emergencyButtonPressed(); 25 | if (status) { 26 | ScaffoldMessenger.of(context).showSnackBar( 27 | SnackBar( 28 | content: Text('Email Sent'), 29 | ), 30 | ); 31 | } else { 32 | ScaffoldMessenger.of(context).showSnackBar( 33 | SnackBar( 34 | content: Text('Error occurred'), 35 | ), 36 | ); 37 | } 38 | }, 39 | ), 40 | ), 41 | ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /lib/screens/login_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LoginScreen extends StatefulWidget { 4 | @override 5 | _LoginScreenState createState() => _LoginScreenState(); 6 | } 7 | 8 | class _LoginScreenState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | backgroundColor: Color(0xFF121212), 13 | body: SafeArea( 14 | child: Padding( 15 | padding: const EdgeInsets.symmetric(horizontal: 24.0), 16 | child: Column( 17 | mainAxisAlignment: MainAxisAlignment.start, 18 | crossAxisAlignment: CrossAxisAlignment.center, 19 | children: [ 20 | SizedBox( 21 | height: 48.0, 22 | ), 23 | Flexible( 24 | child: Container( 25 | height: 200.0, 26 | child: Image.asset('assets/Logo.png'), 27 | ), 28 | ), 29 | SizedBox( 30 | height: 30.0, 31 | ), 32 | Text( 33 | 'YouSafe', 34 | textAlign: TextAlign.center, 35 | style: TextStyle( 36 | fontSize: 48.0, 37 | fontWeight: FontWeight.w600, 38 | color: Color(0xFF5DB075)), 39 | ), 40 | SizedBox( 41 | height: 60.0, 42 | ), 43 | TextField( 44 | keyboardType: TextInputType.phone, 45 | onChanged: (value) {}, 46 | decoration: InputDecoration( 47 | fillColor: Colors.white, 48 | filled: true, 49 | hintText: 'Phone Number', 50 | contentPadding: 51 | EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), 52 | border: OutlineInputBorder( 53 | borderRadius: BorderRadius.all(Radius.circular(32.0)), 54 | ), 55 | enabledBorder: OutlineInputBorder( 56 | borderSide: 57 | BorderSide(color: Color(0xFF323232), width: 1.0), 58 | borderRadius: BorderRadius.all(Radius.circular(10.0)), 59 | ), 60 | focusedBorder: OutlineInputBorder( 61 | borderSide: 62 | BorderSide(color: Color(0xFF121212), width: 2.0), 63 | borderRadius: BorderRadius.all(Radius.circular(10.0)), 64 | ), 65 | )), 66 | SizedBox( 67 | height: 100.0, 68 | ), 69 | CustomButton( 70 | width: 100.0, 71 | height: 50.0, 72 | bgColor: Color(0xFF5DB075), 73 | title: 'Sign in', 74 | borderRadius: BorderRadius.all(Radius.circular(40.0)), 75 | onPress: () {}, 76 | ), 77 | ], 78 | ), 79 | ), 80 | ), 81 | ); 82 | } 83 | } 84 | 85 | class CustomButton extends StatelessWidget { 86 | final Function onPress; 87 | final String title; 88 | final Color bgColor; 89 | final BorderRadiusGeometry borderRadius; 90 | final double height; 91 | final double width; 92 | 93 | const CustomButton( 94 | {Key? key, 95 | required this.onPress, 96 | required this.title, 97 | required this.bgColor, 98 | required this.borderRadius, 99 | required this.height, 100 | required this.width}) 101 | : super(key: key); 102 | 103 | @override 104 | Widget build(BuildContext context) { 105 | return GestureDetector( 106 | onTap: () {}, 107 | child: Container( 108 | width: width, 109 | height: height, 110 | decoration: BoxDecoration(color: bgColor, borderRadius: borderRadius), 111 | child: Center( 112 | child: Text( 113 | title, 114 | style: TextStyle(color: Colors.white, fontSize: 16), 115 | ), 116 | ), 117 | ), 118 | ); 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /lib/screens/screen.dart: -------------------------------------------------------------------------------- 1 | export 'emergency_screen.dart'; 2 | export 'contact_screen.dart'; 3 | export 'login_screen.dart'; -------------------------------------------------------------------------------- /lib/widgets/widget.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenCodeyard/YouSafe/a3f6b961d71160f45cc7c4e22216021c765a9bf7/lib/widgets/widget.dart -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.9.0" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.1.0" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.2.1" 25 | clock: 26 | dependency: transitive 27 | description: 28 | name: clock 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.1.1" 32 | collection: 33 | dependency: transitive 34 | description: 35 | name: collection 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.16.0" 39 | contacts_service: 40 | dependency: "direct main" 41 | description: 42 | name: contacts_service 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "0.6.3" 46 | cupertino_icons: 47 | dependency: "direct main" 48 | description: 49 | name: cupertino_icons 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "0.1.3" 53 | fake_async: 54 | dependency: transitive 55 | description: 56 | name: fake_async 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "1.3.1" 60 | flutter: 61 | dependency: "direct main" 62 | description: flutter 63 | source: sdk 64 | version: "0.0.0" 65 | flutter_test: 66 | dependency: "direct dev" 67 | description: flutter 68 | source: sdk 69 | version: "0.0.0" 70 | flutter_web_plugins: 71 | dependency: transitive 72 | description: flutter 73 | source: sdk 74 | version: "0.0.0" 75 | geolocator: 76 | dependency: "direct main" 77 | description: 78 | name: geolocator 79 | url: "https://pub.dartlang.org" 80 | source: hosted 81 | version: "9.0.2" 82 | geolocator_android: 83 | dependency: transitive 84 | description: 85 | name: geolocator_android 86 | url: "https://pub.dartlang.org" 87 | source: hosted 88 | version: "4.1.3" 89 | geolocator_apple: 90 | dependency: transitive 91 | description: 92 | name: geolocator_apple 93 | url: "https://pub.dartlang.org" 94 | source: hosted 95 | version: "2.2.2" 96 | geolocator_platform_interface: 97 | dependency: transitive 98 | description: 99 | name: geolocator_platform_interface 100 | url: "https://pub.dartlang.org" 101 | source: hosted 102 | version: "4.0.6" 103 | geolocator_web: 104 | dependency: transitive 105 | description: 106 | name: geolocator_web 107 | url: "https://pub.dartlang.org" 108 | source: hosted 109 | version: "2.1.6" 110 | geolocator_windows: 111 | dependency: transitive 112 | description: 113 | name: geolocator_windows 114 | url: "https://pub.dartlang.org" 115 | source: hosted 116 | version: "0.1.1" 117 | intl: 118 | dependency: transitive 119 | description: 120 | name: intl 121 | url: "https://pub.dartlang.org" 122 | source: hosted 123 | version: "0.17.0" 124 | js: 125 | dependency: transitive 126 | description: 127 | name: js 128 | url: "https://pub.dartlang.org" 129 | source: hosted 130 | version: "0.6.4" 131 | json_annotation: 132 | dependency: transitive 133 | description: 134 | name: json_annotation 135 | url: "https://pub.dartlang.org" 136 | source: hosted 137 | version: "4.7.0" 138 | logging: 139 | dependency: transitive 140 | description: 141 | name: logging 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "1.1.0" 145 | mailer: 146 | dependency: "direct main" 147 | description: 148 | name: mailer 149 | url: "https://pub.dartlang.org" 150 | source: hosted 151 | version: "5.2.0" 152 | matcher: 153 | dependency: transitive 154 | description: 155 | name: matcher 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "0.12.12" 159 | material_color_utilities: 160 | dependency: transitive 161 | description: 162 | name: material_color_utilities 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "0.1.5" 166 | meta: 167 | dependency: transitive 168 | description: 169 | name: meta 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "1.8.0" 173 | mime: 174 | dependency: transitive 175 | description: 176 | name: mime 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "1.0.2" 180 | path: 181 | dependency: transitive 182 | description: 183 | name: path 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "1.8.2" 187 | pedantic: 188 | dependency: transitive 189 | description: 190 | name: pedantic 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "1.11.1" 194 | plugin_platform_interface: 195 | dependency: transitive 196 | description: 197 | name: plugin_platform_interface 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "2.1.3" 201 | quiver: 202 | dependency: transitive 203 | description: 204 | name: quiver 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "3.1.0" 208 | sky_engine: 209 | dependency: transitive 210 | description: flutter 211 | source: sdk 212 | version: "0.0.99" 213 | source_span: 214 | dependency: transitive 215 | description: 216 | name: source_span 217 | url: "https://pub.dartlang.org" 218 | source: hosted 219 | version: "1.9.0" 220 | speech_to_text: 221 | dependency: "direct main" 222 | description: 223 | name: speech_to_text 224 | url: "https://pub.dartlang.org" 225 | source: hosted 226 | version: "6.0.0" 227 | speech_to_text_macos: 228 | dependency: transitive 229 | description: 230 | name: speech_to_text_macos 231 | url: "https://pub.dartlang.org" 232 | source: hosted 233 | version: "1.0.2" 234 | speech_to_text_platform_interface: 235 | dependency: transitive 236 | description: 237 | name: speech_to_text_platform_interface 238 | url: "https://pub.dartlang.org" 239 | source: hosted 240 | version: "2.0.1" 241 | stack_trace: 242 | dependency: transitive 243 | description: 244 | name: stack_trace 245 | url: "https://pub.dartlang.org" 246 | source: hosted 247 | version: "1.10.0" 248 | stream_channel: 249 | dependency: transitive 250 | description: 251 | name: stream_channel 252 | url: "https://pub.dartlang.org" 253 | source: hosted 254 | version: "2.1.0" 255 | string_scanner: 256 | dependency: transitive 257 | description: 258 | name: string_scanner 259 | url: "https://pub.dartlang.org" 260 | source: hosted 261 | version: "1.1.1" 262 | term_glyph: 263 | dependency: transitive 264 | description: 265 | name: term_glyph 266 | url: "https://pub.dartlang.org" 267 | source: hosted 268 | version: "1.2.1" 269 | test_api: 270 | dependency: transitive 271 | description: 272 | name: test_api 273 | url: "https://pub.dartlang.org" 274 | source: hosted 275 | version: "0.4.12" 276 | vector_math: 277 | dependency: transitive 278 | description: 279 | name: vector_math 280 | url: "https://pub.dartlang.org" 281 | source: hosted 282 | version: "2.1.2" 283 | sdks: 284 | dart: ">=2.17.5 <3.0.0" 285 | flutter: ">=2.8.0" 286 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: yousafe 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.15.1 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | mailer: ^5.2.0 27 | contacts_service: ^0.6.3 28 | # flutter_sms: ^2.0.0 29 | geolocator: ^9.0.2 30 | speech_to_text: ^6.0.0 31 | # flutter_background_geolocation: 32 | # background_geolocation_firebase: 33 | 34 | 35 | # The following adds the Cupertino Icons font to your application. 36 | # Use with the CupertinoIcons class for iOS style icons. 37 | cupertino_icons: ^0.1.3 38 | 39 | dev_dependencies: 40 | flutter_test: 41 | sdk: flutter 42 | 43 | 44 | # For information on the generic Dart part of this file, see the 45 | # following page: https://dart.dev/tools/pub/pubspec 46 | 47 | # The following section is specific to Flutter. 48 | flutter: 49 | 50 | # The following line ensures that the Material Icons font is 51 | # included with your application, so that you can use the icons in 52 | # the material Icons class. 53 | uses-material-design: true 54 | 55 | # To add assets to your application, add an assets section, like this: 56 | # assets: 57 | # - assets/ 58 | # An image asset can refer to one or more resolution-specific "variants", see 59 | # https://flutter.dev/assets-and-images/#resolution-aware. 60 | 61 | # For details regarding adding assets from package dependencies, see 62 | # https://flutter.dev/assets-and-images/#from-packages 63 | 64 | # To add custom fonts to your application, add a fonts section here, 65 | # in this "flutter" section. Each entry in this list should have a 66 | # "family" key with the font family name, and a "fonts" key with a 67 | # list giving the asset and other descriptors for the font. For 68 | # example: 69 | # fonts: 70 | # - family: Schyler 71 | # fonts: 72 | # - asset: fonts/Schyler-Regular.ttf 73 | # - asset: fonts/Schyler-Italic.ttf 74 | # style: italic 75 | # - family: Trajan Pro 76 | # fonts: 77 | # - asset: fonts/TrajanPro.ttf 78 | # - asset: fonts/TrajanPro_Bold.ttf 79 | # weight: 700 80 | # 81 | # For details regarding fonts from package dependencies, 82 | # see https://flutter.dev/custom-fonts/#from-packages 83 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:yousafe/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(YouSafeApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /tutorials.md: -------------------------------------------------------------------------------- 1 |

Tutorials📰

2 | 3 | ## Flutter Tutorials 💙 4 | 5 | These are some of the articles and videos, from where you can *learn flutter* that too free of cost and then ***start contributing to this project. ☺️☺️*** 6 | 7 | - The official the [**flutter docs**](https://flutter.dev/docs/reference/tutorials) are the best place if you want to learn flutter. 8 | 9 | - [**Tutorials Point**](https://www.tutorialspoint.com/flutter/index.htm) Website also containes a detailed and well structed content for flutter. 10 | 11 | - The [**Net Ninja**](https://www.youtube.com/playlist?list=PL4cUxeGkcC9jLYyp2Aoh6hcWuxFDX6PBJ) Flutter Playlist. 12 | 13 | - [**M-tech viral**](https://www.youtube.com/playlist?list=PLR2qQy0Zxs_UdqAcaipPR3CG1Ly57UlhV) Flutter Playlist. 14 | 15 | You can follow any of the above to learn flutter, even if you have no prior experience with flutter. These tutorials are **beginner-friendly.** 16 | 17 | 18 | ## Git Tutorials 🚩 19 | 20 | - Before you start **contributing to the repository** understand [**collaborating with issues and pull requests**](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests) 21 | 22 | - To start **commiting** [**changes to your projects**](https://docs.github.com/en/free-pro-team@latest/github/committing-changes-to-your-project) 23 | 24 | - To understand how **GitHub flow:octocat:** actually look like refer the [**GitHub Flow Documentation**](https://guides.github.com/introduction/flow/). 25 | 26 | - To write a seamless **documentation** refer [**Markdown syntax description**](https://daringfireball.net/projects/markdown/syntax) and [**Github flavoured Markdown**](https://github.github.com/gfm/#what-is-github-flavored-markdown-) 27 | 28 | - If you want to add **emojis** refer [**GitHub Markdown emojis**](https://gist.github.com/rxaviers/7360908). 29 | 30 | Some Interesting articles and videos for learning Git. 31 | 32 | - [**Udacity**](https://www.udacity.com/course/version-control-with-git--ud123) free course for learning ***Git and Version Control*** 33 | 34 | - [**Youtube Videos**](https://youtu.be/MJUJ4wbFm_A) for learning Git 35 | 36 | 37 | ## Adobe XD tutorials ✒️ 38 | 39 | - Tutorials from official [**Adobe Website**](https://helpx.adobe.com/xd/tutorials.html) 40 | - A detailed youtube playlist on [**Adobe XD**](https://www.youtube.com/playlist?list=PLkiM1tZke4mivrZRPcqp_8oHFxlD8-IP5) 41 | 42 | - A 4 hrs [**Crash Course**](https://youtu.be/68w2VwalD5w) on Adobe XD 43 | 44 | --------------------------------------------------------------------------------