├── .flutter-plugins-dependencies
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── .metadata
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ENCRYPTION.md
├── LICENSE
├── README.md
├── android
├── app
│ ├── .gitattributes
│ ├── build.gradle
│ ├── google-services.json
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── .gitattributes
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── dev
│ │ │ │ └── fliver
│ │ │ │ └── driver
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable
│ │ │ ├── app_icon.png
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── launcher_icon.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launcher_icon.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── credits
│ ├── priyansh.jpg
│ ├── urmil.jpg
│ └── vinay.png
├── flare
│ ├── fetching_location.flr
│ ├── messages-dark.flr
│ ├── messages-light.flr
│ └── no_connection.flr
├── fonts
│ └── AvenirNextRounded
│ │ └── AvenirNextRounded-Medium.ttf
├── icon
│ ├── icon-adaptive.png
│ ├── icon-ios.png
│ └── icon-legacy.png
├── logo
│ ├── text-black.png
│ ├── text-green.png
│ └── text-white.png
└── other
│ ├── cluster.png
│ ├── icon.png
│ ├── notification.png
│ ├── rickshaw-top.png
│ ├── rickshaw.png
│ └── rupee.png
├── branding
├── other
│ ├── google-play-badge.png
│ ├── rickshaw.png
│ └── text.png
└── screenshots
│ ├── 01.png
│ ├── 02.png
│ ├── 03.png
│ ├── 04.png
│ └── 05.png
├── ios
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── flutter_export_environment.sh
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Runner
│ ├── .gitattributes
│ ├── 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-50x50@1x.png
│ │ ├── Icon-App-50x50@2x.png
│ │ ├── Icon-App-57x57@1x.png
│ │ ├── Icon-App-57x57@2x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-72x72@1x.png
│ │ ├── Icon-App-72x72@2x.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
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── main.dart
├── pages
│ ├── chat_page.dart
│ ├── map_view_page.dart
│ └── onboarding_page.dart
├── services
│ ├── censor.dart
│ └── firebase_analytics.dart
├── utils
│ ├── colors.dart
│ ├── first_page.dart
│ ├── map_helper.dart
│ ├── map_marker.dart
│ ├── map_styles.dart
│ ├── text_styles.dart
│ ├── translations.dart
│ └── ui_helpers.dart
└── widgets
│ ├── fetching_location.dart
│ ├── message.dart
│ ├── message_placeholder.dart
│ ├── no_connection.dart
│ └── sexy_tile.dart
├── pubspec.lock
└── pubspec.yaml
/.flutter-plugins-dependencies:
--------------------------------------------------------------------------------
1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.4+2/","dependencies":["firebase_core"]},{"name":"connectivity","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.5+3/","dependencies":[]},{"name":"firebase_analytics","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_analytics-5.0.11/","dependencies":[]},{"name":"firebase_core","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.4/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.2.2/","dependencies":[]},{"name":"geoflutterfire","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/geoflutterfire-2.1.0/","dependencies":["cloud_firestore"]},{"name":"geolocator","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-5.3.0/","dependencies":["location_permissions"]},{"name":"google_maps_flutter","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/google_maps_flutter-0.5.24+1/","dependencies":[]},{"name":"location_permissions","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/location_permissions-2.0.5/","dependencies":[]},{"name":"path_provider","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.4.5/","dependencies":[]},{"name":"share","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/share-0.6.3+6/","dependencies":[]},{"name":"shared_preferences","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.6+3/","dependencies":[]},{"name":"sqflite","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.1.7+3/","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.4+2/","dependencies":["firebase_core"]},{"name":"connectivity","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.5+3/","dependencies":[]},{"name":"firebase_analytics","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_analytics-5.0.11/","dependencies":[]},{"name":"firebase_core","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.4/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.2.2/","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.6/","dependencies":[]},{"name":"geoflutterfire","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/geoflutterfire-2.1.0/","dependencies":["cloud_firestore"]},{"name":"geolocator","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-5.3.0/","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/google_api_availability-2.0.3/","dependencies":[]},{"name":"google_maps_flutter","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/google_maps_flutter-0.5.24+1/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"location_permissions","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/location_permissions-2.0.5/","dependencies":[]},{"name":"path_provider","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.4.5/","dependencies":[]},{"name":"share","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/share-0.6.3+6/","dependencies":[]},{"name":"shared_preferences","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.6+3/","dependencies":[]},{"name":"sqflite","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.1.7+3/","dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.4+2/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.4/","dependencies":[]},{"name":"shared_preferences_macos","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+6/","dependencies":[]}],"linux":[],"windows":[],"web":[{"name":"cloud_firestore_web","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/urmilshroff/Development/GitHub/Clones/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+4/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core","cloud_firestore_web"]},{"name":"cloud_firestore_web","dependencies":["firebase_core"]},{"name":"connectivity","dependencies":[]},{"name":"firebase_analytics","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"geoflutterfire","dependencies":["cloud_firestore"]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_maps_flutter","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"location_permissions","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"share","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"sqflite","dependencies":[]}],"date_created":"2020-03-17 18:40:40.286382","version":"1.15.22-pre.28"}
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: urmilshroff, prince1998, vinay-ai
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '...'
17 | 3. Scroll down to '...'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Smartphone:**
27 | - Device:
28 | - OS:
29 |
30 | **Additional context**
31 | Add any other context about the problem here.
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[FEATURE REQUEST]"
5 | labels: enhancement
6 | assignees: urmilshroff, prince1998, vinay-ai
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Eg: I'm always frustrated when...
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/.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 | .dart_tool/
26 | .flutter-plugins
27 | .packages
28 | .pub-cache/
29 | .pub/
30 | /build/
31 |
32 | # Android related
33 | **/android/**/gradle-wrapper.jar
34 | **/android/.gradle
35 | **/android/captures/
36 | **/android/gradlew
37 | **/android/gradlew.bat
38 | **/android/local.properties
39 | **/android/**/GeneratedPluginRegistrant.java
40 |
41 | # iOS/XCode related
42 | **/ios/**/*.mode1v3
43 | **/ios/**/*.mode2v3
44 | **/ios/**/*.moved-aside
45 | **/ios/**/*.pbxuser
46 | **/ios/**/*.perspectivev3
47 | **/ios/**/*sync/
48 | **/ios/**/.sconsign.dblite
49 | **/ios/**/.tags*
50 | **/ios/**/.vagrant/
51 | **/ios/**/DerivedData/
52 | **/ios/**/Icon?
53 | **/ios/**/Pods/
54 | **/ios/**/.symlinks/
55 | **/ios/**/profile
56 | **/ios/**/xcuserdata
57 | **/ios/.generated/
58 | **/ios/Flutter/App.framework
59 | **/ios/Flutter/Flutter.framework
60 | **/ios/Flutter/Generated.xcconfig
61 | **/ios/Flutter/app.flx
62 | **/ios/Flutter/app.zip
63 | **/ios/Flutter/flutter_assets/
64 | **/ios/ServiceDefinitions.json
65 | **/ios/Runner/GeneratedPluginRegistrant.*
66 |
67 | # Exceptions to above rules.
68 | !**/ios/**/default.mode1v3
69 | !**/ios/**/default.mode2v3
70 | !**/ios/**/default.pbxuser
71 | !**/ios/**/default.perspectivev3
72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
73 | ios/Flutter/flutter_export_environment.sh
74 | android/key.properties
75 |
--------------------------------------------------------------------------------
/.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: 20e59316b8b8474554b38493b8ca888794b0234a
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at urmilshroff@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | When contributing to this repository, please discuss the changes you wish to make by submitting an [issue](https://github.com/fliverdev/driver/issues) first. It helps us understand your proposal in advance and discuss wether it is necessary or not.
4 |
5 | Alternatively, you can contribute to resolve any of the [open issues](https://github.com/fliverdev/driver/issues) without the need for prior discussion.
6 |
7 | ## Pull Requests
8 |
9 | **Important:** this project contains certain files that are encrypted due to the use of API keys, which is why it will not build directly on your machine. Please refer to [ENCRYPTION.md](ENCRYPTION.md) for more information.
10 |
11 | Please follow these exact steps for sending us a pull request:
12 |
13 | - Make sure that an issue regarding your proposal is open (by you or someone else).
14 | - Fork this repository and clone the fork to your local machine.
15 | - Checkout the `dev` branch for the latest development progress using `git checkout dev`.
16 | - Replace all the encrypted files with your own as explained in [ENCRYPTION.md](ENCRYPTION.md).
17 | - **Important:** When committing changes, ensure that you deselect/unstage the encrypted files that you locally modified in the previous step. If you commit your own encrypted files, **we will not merge your pull request**.
18 | - Send us a pull request from `your-username:dev` to `fliverdev:dev`.
19 | - Your PR will be merged if satisfactory.
20 |
--------------------------------------------------------------------------------
/ENCRYPTION.md:
--------------------------------------------------------------------------------
1 | # Encryption
2 |
3 | This project contains certain files that are encrypted using [git-crypt](https://github.com/AGWA/git-crypt) due to the use of API keys to connect to Firebase and Google Maps, which is why it will not build directly on your machine.
4 |
5 | The following are the files that have been encrypted:
6 |
7 | - `/android/app/src/main/AndroidManifest.xml`
8 | - `/ios/Runner/AppDelegate.swift`
9 | - `/android/app/google-services.json`
10 | - `/ios/Runner/GoogleService-Info.plist`
11 |
12 | In order to resolve this, you must replace the encrypted files with files containing your own API credentials. These API credentials can be obtained by [creating a new Firebase project](https://console.firebase.google.com/) and following the instructions from there.
13 |
14 | ### Android Manifest
15 | Replace the encrypted `AndroidManifest.xml` with the following contents, and replace "YOUR_API_KEY" with your own:
16 |
17 | ```
18 |
21 |
26 |
33 |
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | ```
54 |
55 | ### iOS App Delegate
56 |
57 | Replace the encrypted `AppDelegate.swift` with the following contents, and replace "YOUR_API_KEY" with your own:
58 |
59 | ```
60 | import UIKit
61 | import Flutter
62 | import Firebase
63 | import GoogleMaps
64 |
65 | @UIApplicationMain
66 | @objc class AppDelegate: FlutterAppDelegate {
67 | override func application(
68 | _ application: UIApplication,
69 | didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
70 | ) -> Bool {
71 | FirebaseApp.configure()
72 | GeneratedPluginRegistrant.register(with: self)
73 | GMSServices.provideAPIKey("YOUR_API_KEY")
74 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
75 | }
76 | }
77 | ```
78 |
79 | ### Google Services for Firebase
80 |
81 | The `google-services.json` and `GoogleService-Info.plist` can be downloaded from your Firebase project for Android and iOS respectively. Replace the old encrypted files with the newly downloaded ones.
82 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |


2 |
3 | # Fliver Driver for Android
4 |
5 | [](https://github.com/fliverdev/driver/stargazers)
6 | [](https://github.com/fliverdev/driver/network/members)
7 | [](https://github.com/fliverdev/driver/issues)
8 | [](https://opensource.org/licenses/GPL-3.0)
9 |
10 | Fliver is an app to help you find customers who are looking for a Rickshaw. Simply open the app and you will see their locations. You can also see where they are going by tapping on a marker, and talk to them in the Global Chat.
11 |
12 | The entire project is open source and free of charge. There are no additional costs for Riders besides for the regular metered Rickshaw fare, and there is no commission that Drivers need to pay. Fliver is simply created to benefit Indian citizens. Check out our [FAQ](https://fliverdev.github.io/faq/) to learn more.
13 |
14 | This is the Driver app repository for Rickshaw Drivers to view customer locations. It is part of the Final Year Project of three Computer Engineering students.
15 |
16 | [
](https://play.google.com/store/apps/details?id=dev.fliver.driver)
17 |
18 | ## Screenshots
19 |
20 |

21 |
22 | ## Building
23 |
24 | **Important:** this project contains certain files that are encrypted due to the use of API keys, which is why it will not build directly on your machine. Please refer to [ENCRYPTION.md](ENCRYPTION.md) for more information.
25 |
26 | To build and run the app on your device, do the following:
27 |
28 | - Install Flutter by following the instructions on their [website](https://flutter.dev/docs/get-started/install/).
29 | - Clone this repo to your local machine using `git clone https://github.com/fliverdev/driver.git`.
30 | - Replace all the encrypted files with your own as explained in [ENCRYPTION.md](ENCRYPTION.md).
31 | - Connect your devices/emulators and run the app using `flutter run` in the root of the project directory.
32 |
33 | **Note:** you can also run it in release mode using `flutter run --release` to improve performance and stability, however, debugging features will be disabled.
34 |
35 | ## Contributing
36 |
37 | Please read the [CONTRIBUTING.md](CONTRIBUTING.md) file for more details on how to contribute.
38 |
39 | ## Credits
40 |
41 | This project is primarily developed by a trio of Computer Engineering students at NMIMS's MPSTME:
42 |
43 | - [Urmil Shroff](https://github.com/urmilshroff)
44 | - [Priyansh Ramnani](https://github.com/prince1998)
45 | - [Vinay Kolwankar](https://github.com/vinay-ai)
46 |
47 | Take a look at the entire list of [contributors](https://github.com/fliverdev/driver/graphs/contributors) to see who all have helped with the project via pull requests.
48 |
49 | ## Legal
50 |
51 | This project is licensed under the GNU GPL v3 - see the [LICENSE](LICENSE) file for details. Also view our [Privacy Policy](https://fliverdev.github.io/privacy_policy/) for additional legal information.
52 |
--------------------------------------------------------------------------------
/android/app/.gitattributes:
--------------------------------------------------------------------------------
1 | google-services.json filter=git-crypt diff=git-crypt
2 | .gitattributes !filter !diff
--------------------------------------------------------------------------------
/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 | def keystoreProperties = new Properties()
29 | def keystorePropertiesFile = rootProject.file('key.properties')
30 | if (keystorePropertiesFile.exists()) {
31 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
32 | }
33 |
34 | android {
35 | compileSdkVersion 29
36 |
37 | sourceSets {
38 | main.java.srcDirs += 'src/main/kotlin'
39 | }
40 |
41 | lintOptions {
42 | disable 'InvalidPackage'
43 | }
44 |
45 | defaultConfig {
46 | applicationId "dev.fliver.driver"
47 | minSdkVersion 21
48 | targetSdkVersion 29
49 | versionCode flutterVersionCode.toInteger()
50 | versionName flutterVersionName
51 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
52 | }
53 |
54 | signingConfigs {
55 | release {
56 | keyAlias keystoreProperties['keyAlias']
57 | keyPassword keystoreProperties['keyPassword']
58 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
59 | storePassword keystoreProperties['storePassword']
60 | }
61 | }
62 |
63 | buildTypes {
64 | release {
65 | signingConfig signingConfigs.release
66 | minifyEnabled true
67 | shrinkResources false
68 | proguardFiles getDefaultProguardFile(
69 | 'proguard-android-optimize.txt'),
70 | 'proguard-rules.pro'
71 | }
72 | }
73 | }
74 |
75 | flutter {
76 | source '../..'
77 | }
78 |
79 | dependencies {
80 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
81 | implementation 'com.google.firebase:firebase-core:17.0.0'
82 | testImplementation 'junit:junit:4.12'
83 | androidTestImplementation 'androidx.test:runner:1.1.1'
84 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
85 | }
86 |
87 | apply plugin: 'com.google.gms.google-services'
--------------------------------------------------------------------------------
/android/app/google-services.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/google-services.json
--------------------------------------------------------------------------------
/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | ## Flutter wrapper
2 | -keep class io.flutter.app.** { *; }
3 | -keep class io.flutter.plugin.** { *; }
4 | -keep class io.flutter.util.** { *; }
5 | -keep class io.flutter.view.** { *; }
6 | -keep class io.flutter.** { *; }
7 | -keep class io.flutter.plugins.** { *; }
8 | -dontwarn io.flutter.embedding.**
9 |
10 | ## Gson rules
11 | # Gson uses generic type information stored in a class file when working with fields. Proguard
12 | # removes such information by default, so configure it to keep all of it.
13 | -keepattributes Signature
14 |
15 | # For using GSON @Expose annotation
16 | -keepattributes *Annotation*
17 |
18 | # Gson specific classes
19 | -dontwarn sun.misc.**
20 | #-keep class com.google.gson.stream.** { *; }
21 |
22 | # Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
23 | # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
24 | -keep class * implements com.google.gson.TypeAdapter
25 | -keep class * implements com.google.gson.TypeAdapterFactory
26 | -keep class * implements com.google.gson.JsonSerializer
27 | -keep class * implements com.google.gson.JsonDeserializer
28 |
29 | # Prevent R8 from leaving Data object members always null
30 | -keepclassmembers,allowobfuscation class * {
31 | @com.google.gson.annotations.SerializedName ;
32 | }
33 |
34 | ## flutter_local_notification plugin rules
35 | -keep class com.dexterous.** { *; }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/.gitattributes:
--------------------------------------------------------------------------------
1 | AndroidManifest.xml filter=git-crypt diff=git-crypt
2 | .gitattributes !filter !diff
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/AndroidManifest.xml
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/dev/fliver/driver/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package dev.fliver.driver
2 |
3 | import android.os.Bundle
4 |
5 | import io.flutter.app.FlutterActivity
6 | import io.flutter.plugins.GeneratedPluginRegistrant
7 |
8 | class MainActivity: FlutterActivity() {
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | GeneratedPluginRegistrant.registerWith(this)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/drawable/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #eceff1
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.0'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.3.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | classpath 'com.google.gms:google-services:4.2.0'
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | google()
18 | jcenter()
19 | }
20 | }
21 |
22 | rootProject.buildDir = '../build'
23 | subprojects {
24 | project.buildDir = "${rootProject.buildDir}/${project.name}"
25 | }
26 | subprojects {
27 | project.evaluationDependsOn(':app')
28 | }
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
33 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 |
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 | android.enableR8=true
6 |
--------------------------------------------------------------------------------
/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-4.10.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/assets/credits/priyansh.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/credits/priyansh.jpg
--------------------------------------------------------------------------------
/assets/credits/urmil.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/credits/urmil.jpg
--------------------------------------------------------------------------------
/assets/credits/vinay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/credits/vinay.png
--------------------------------------------------------------------------------
/assets/flare/fetching_location.flr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/flare/fetching_location.flr
--------------------------------------------------------------------------------
/assets/flare/messages-dark.flr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/flare/messages-dark.flr
--------------------------------------------------------------------------------
/assets/flare/messages-light.flr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/flare/messages-light.flr
--------------------------------------------------------------------------------
/assets/flare/no_connection.flr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/flare/no_connection.flr
--------------------------------------------------------------------------------
/assets/fonts/AvenirNextRounded/AvenirNextRounded-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/fonts/AvenirNextRounded/AvenirNextRounded-Medium.ttf
--------------------------------------------------------------------------------
/assets/icon/icon-adaptive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/icon/icon-adaptive.png
--------------------------------------------------------------------------------
/assets/icon/icon-ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/icon/icon-ios.png
--------------------------------------------------------------------------------
/assets/icon/icon-legacy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/icon/icon-legacy.png
--------------------------------------------------------------------------------
/assets/logo/text-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/logo/text-black.png
--------------------------------------------------------------------------------
/assets/logo/text-green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/logo/text-green.png
--------------------------------------------------------------------------------
/assets/logo/text-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/logo/text-white.png
--------------------------------------------------------------------------------
/assets/other/cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/cluster.png
--------------------------------------------------------------------------------
/assets/other/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/icon.png
--------------------------------------------------------------------------------
/assets/other/notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/notification.png
--------------------------------------------------------------------------------
/assets/other/rickshaw-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/rickshaw-top.png
--------------------------------------------------------------------------------
/assets/other/rickshaw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/rickshaw.png
--------------------------------------------------------------------------------
/assets/other/rupee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/assets/other/rupee.png
--------------------------------------------------------------------------------
/branding/other/google-play-badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/other/google-play-badge.png
--------------------------------------------------------------------------------
/branding/other/rickshaw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/other/rickshaw.png
--------------------------------------------------------------------------------
/branding/other/text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/other/text.png
--------------------------------------------------------------------------------
/branding/screenshots/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/screenshots/01.png
--------------------------------------------------------------------------------
/branding/screenshots/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/screenshots/02.png
--------------------------------------------------------------------------------
/branding/screenshots/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/screenshots/03.png
--------------------------------------------------------------------------------
/branding/screenshots/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/screenshots/04.png
--------------------------------------------------------------------------------
/branding/screenshots/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/branding/screenshots/05.png
--------------------------------------------------------------------------------
/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 "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/flutter_export_environment.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This is a generated file; do not edit or check into version control.
3 | export "FLUTTER_ROOT=/Users/urmilshroff/Development/GitHub/Clones/flutter"
4 | export "FLUTTER_APPLICATION_PATH=/Users/urmilshroff/Development/Apps/Projects/driver"
5 | export "FLUTTER_TARGET=lib/main.dart"
6 | export "FLUTTER_BUILD_DIR=build"
7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios"
8 | export "OTHER_LDFLAGS=$(inherited) -framework Flutter"
9 | export "FLUTTER_FRAMEWORK_DIR=/Users/urmilshroff/Development/GitHub/Clones/flutter/bin/cache/artifacts/engine/ios"
10 | export "FLUTTER_BUILD_NAME=2.0.0"
11 | export "FLUTTER_BUILD_NUMBER=7"
12 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '9.0'
3 | pod 'Firebase/Core'
4 |
5 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
6 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
7 |
8 | project 'Runner', {
9 | 'Debug' => :debug,
10 | 'Profile' => :release,
11 | 'Release' => :release,
12 | }
13 |
14 | def parse_KV_file(file, separator='=')
15 | file_abs_path = File.expand_path(file)
16 | if !File.exists? file_abs_path
17 | return [];
18 | end
19 | pods_ary = []
20 | skip_line_start_symbols = ["#", "/"]
21 | File.foreach(file_abs_path) { |line|
22 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
23 | plugin = line.split(pattern=separator)
24 | if plugin.length == 2
25 | podname = plugin[0].strip()
26 | path = plugin[1].strip()
27 | podpath = File.expand_path("#{path}", file_abs_path)
28 | pods_ary.push({:name => podname, :path => podpath});
29 | else
30 | puts "Invalid plugin specification: #{line}"
31 | end
32 | }
33 | return pods_ary
34 | end
35 |
36 | target 'Runner' do
37 | use_frameworks!
38 |
39 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
40 | # referring to absolute paths on developers' machines.
41 | system('rm -rf .symlinks')
42 | system('mkdir -p .symlinks/plugins')
43 |
44 | # Flutter Pods
45 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
46 | if generated_xcode_build_settings.empty?
47 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first."
48 | end
49 | generated_xcode_build_settings.map { |p|
50 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
51 | symlink = File.join('.symlinks', 'flutter')
52 | File.symlink(File.dirname(p[:path]), symlink)
53 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
54 | end
55 | }
56 |
57 | # Plugin Pods
58 | plugin_pods = parse_KV_file('../.flutter-plugins')
59 | plugin_pods.map { |p|
60 | symlink = File.join('.symlinks', 'plugins', p[:name])
61 | File.symlink(p[:path], symlink)
62 | pod p[:name], :path => File.join(symlink, 'ios')
63 | }
64 | end
65 |
66 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
67 | install! 'cocoapods', :disable_input_output_paths => true
68 |
69 | post_install do |installer|
70 | installer.pods_project.targets.each do |target|
71 | target.build_configurations.each do |config|
72 | config.build_settings['ENABLE_BITCODE'] = 'NO'
73 | end
74 | end
75 | end
76 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - BoringSSL-GRPC (0.0.3):
3 | - BoringSSL-GRPC/Implementation (= 0.0.3)
4 | - BoringSSL-GRPC/Interface (= 0.0.3)
5 | - BoringSSL-GRPC/Implementation (0.0.3):
6 | - BoringSSL-GRPC/Interface (= 0.0.3)
7 | - BoringSSL-GRPC/Interface (0.0.3)
8 | - cloud_firestore (0.0.1):
9 | - Firebase/Core
10 | - Firebase/Firestore (~> 6.0)
11 | - Flutter
12 | - connectivity (0.0.1):
13 | - Flutter
14 | - Reachability
15 | - Firebase/Core (6.6.0):
16 | - Firebase/CoreOnly
17 | - FirebaseAnalytics (= 6.1.0)
18 | - Firebase/CoreOnly (6.6.0):
19 | - FirebaseCore (= 6.2.0)
20 | - Firebase/Firestore (6.6.0):
21 | - Firebase/CoreOnly
22 | - FirebaseFirestore (~> 1.4.3)
23 | - firebase_core (0.0.1):
24 | - Firebase/Core
25 | - Flutter
26 | - FirebaseAnalytics (6.1.0):
27 | - FirebaseCore (~> 6.2)
28 | - FirebaseInstanceID (~> 4.2)
29 | - GoogleAppMeasurement (= 6.1.0)
30 | - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
31 | - GoogleUtilities/MethodSwizzler (~> 6.0)
32 | - GoogleUtilities/Network (~> 6.0)
33 | - "GoogleUtilities/NSData+zlib (~> 6.0)"
34 | - nanopb (~> 0.3)
35 | - FirebaseAuthInterop (1.0.0)
36 | - FirebaseCore (6.2.0):
37 | - FirebaseCoreDiagnostics (~> 1.0)
38 | - FirebaseCoreDiagnosticsInterop (~> 1.0)
39 | - GoogleUtilities/Environment (~> 6.2)
40 | - GoogleUtilities/Logger (~> 6.2)
41 | - FirebaseCoreDiagnostics (1.0.1):
42 | - FirebaseCoreDiagnosticsInterop (~> 1.0)
43 | - GoogleDataTransportCCTSupport (~> 1.0)
44 | - GoogleUtilities/Environment (~> 6.2)
45 | - GoogleUtilities/Logger (~> 6.2)
46 | - FirebaseCoreDiagnosticsInterop (1.0.0)
47 | - FirebaseFirestore (1.4.3):
48 | - FirebaseAuthInterop (~> 1.0)
49 | - FirebaseCore (~> 6.2)
50 | - FirebaseFirestore/abseil-cpp (= 1.4.3)
51 | - "gRPC-C++ (= 0.0.9)"
52 | - leveldb-library (~> 1.20)
53 | - nanopb (~> 0.3.901)
54 | - Protobuf (~> 3.1)
55 | - FirebaseFirestore/abseil-cpp (1.4.3):
56 | - FirebaseAuthInterop (~> 1.0)
57 | - FirebaseCore (~> 6.2)
58 | - "gRPC-C++ (= 0.0.9)"
59 | - leveldb-library (~> 1.20)
60 | - nanopb (~> 0.3.901)
61 | - Protobuf (~> 3.1)
62 | - FirebaseInstanceID (4.2.3):
63 | - FirebaseCore (~> 6.0)
64 | - GoogleUtilities/Environment (~> 6.0)
65 | - GoogleUtilities/UserDefaults (~> 6.0)
66 | - Flutter (1.0.0)
67 | - geolocator (5.1.5):
68 | - Flutter
69 | - google_api_availability (2.0.1):
70 | - Flutter
71 | - google_maps_flutter (0.0.1):
72 | - Flutter
73 | - GoogleMaps
74 | - GoogleAppMeasurement (6.1.0):
75 | - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
76 | - GoogleUtilities/MethodSwizzler (~> 6.0)
77 | - GoogleUtilities/Network (~> 6.0)
78 | - "GoogleUtilities/NSData+zlib (~> 6.0)"
79 | - nanopb (~> 0.3)
80 | - GoogleDataTransport (1.1.0)
81 | - GoogleDataTransportCCTSupport (1.0.1):
82 | - GoogleDataTransport (~> 1.1)
83 | - nanopb
84 | - GoogleMaps (3.3.0):
85 | - GoogleMaps/Maps (= 3.3.0)
86 | - GoogleMaps/Base (3.3.0)
87 | - GoogleMaps/Maps (3.3.0):
88 | - GoogleMaps/Base
89 | - GoogleUtilities/AppDelegateSwizzler (6.2.4):
90 | - GoogleUtilities/Environment
91 | - GoogleUtilities/Logger
92 | - GoogleUtilities/Network
93 | - GoogleUtilities/Environment (6.2.4)
94 | - GoogleUtilities/Logger (6.2.4):
95 | - GoogleUtilities/Environment
96 | - GoogleUtilities/MethodSwizzler (6.2.4):
97 | - GoogleUtilities/Logger
98 | - GoogleUtilities/Network (6.2.4):
99 | - GoogleUtilities/Logger
100 | - "GoogleUtilities/NSData+zlib"
101 | - GoogleUtilities/Reachability
102 | - "GoogleUtilities/NSData+zlib (6.2.4)"
103 | - GoogleUtilities/Reachability (6.2.4):
104 | - GoogleUtilities/Logger
105 | - GoogleUtilities/UserDefaults (6.2.4):
106 | - GoogleUtilities/Logger
107 | - "gRPC-C++ (0.0.9)":
108 | - "gRPC-C++/Implementation (= 0.0.9)"
109 | - "gRPC-C++/Interface (= 0.0.9)"
110 | - "gRPC-C++/Implementation (0.0.9)":
111 | - "gRPC-C++/Interface (= 0.0.9)"
112 | - gRPC-Core (= 1.21.0)
113 | - nanopb (~> 0.3)
114 | - "gRPC-C++/Interface (0.0.9)"
115 | - gRPC-Core (1.21.0):
116 | - gRPC-Core/Implementation (= 1.21.0)
117 | - gRPC-Core/Interface (= 1.21.0)
118 | - gRPC-Core/Implementation (1.21.0):
119 | - BoringSSL-GRPC (= 0.0.3)
120 | - gRPC-Core/Interface (= 1.21.0)
121 | - nanopb (~> 0.3)
122 | - gRPC-Core/Interface (1.21.0)
123 | - leveldb-library (1.20)
124 | - location_permissions (2.0.3):
125 | - Flutter
126 | - nanopb (0.3.901):
127 | - nanopb/decode (= 0.3.901)
128 | - nanopb/encode (= 0.3.901)
129 | - nanopb/decode (0.3.901)
130 | - nanopb/encode (0.3.901)
131 | - Protobuf (3.9.0)
132 | - Reachability (3.2)
133 | - share (0.5.2):
134 | - Flutter
135 | - shared_preferences (0.0.1):
136 | - Flutter
137 | - url_launcher (0.0.1):
138 | - Flutter
139 |
140 | DEPENDENCIES:
141 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
142 | - connectivity (from `.symlinks/plugins/connectivity/ios`)
143 | - Firebase/Core
144 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
145 | - Flutter (from `.symlinks/flutter/ios`)
146 | - geolocator (from `.symlinks/plugins/geolocator/ios`)
147 | - google_api_availability (from `.symlinks/plugins/google_api_availability/ios`)
148 | - google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`)
149 | - location_permissions (from `.symlinks/plugins/location_permissions/ios`)
150 | - share (from `.symlinks/plugins/share/ios`)
151 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
152 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
153 |
154 | SPEC REPOS:
155 | https://github.com/CocoaPods/Specs.git:
156 | - BoringSSL-GRPC
157 | - Firebase
158 | - FirebaseAnalytics
159 | - FirebaseAuthInterop
160 | - FirebaseCore
161 | - FirebaseCoreDiagnostics
162 | - FirebaseCoreDiagnosticsInterop
163 | - FirebaseFirestore
164 | - FirebaseInstanceID
165 | - GoogleAppMeasurement
166 | - GoogleDataTransport
167 | - GoogleDataTransportCCTSupport
168 | - GoogleMaps
169 | - GoogleUtilities
170 | - "gRPC-C++"
171 | - gRPC-Core
172 | - leveldb-library
173 | - nanopb
174 | - Protobuf
175 | trunk:
176 | - Reachability
177 |
178 | EXTERNAL SOURCES:
179 | cloud_firestore:
180 | :path: ".symlinks/plugins/cloud_firestore/ios"
181 | connectivity:
182 | :path: ".symlinks/plugins/connectivity/ios"
183 | firebase_core:
184 | :path: ".symlinks/plugins/firebase_core/ios"
185 | Flutter:
186 | :path: ".symlinks/flutter/ios"
187 | geolocator:
188 | :path: ".symlinks/plugins/geolocator/ios"
189 | google_api_availability:
190 | :path: ".symlinks/plugins/google_api_availability/ios"
191 | google_maps_flutter:
192 | :path: ".symlinks/plugins/google_maps_flutter/ios"
193 | location_permissions:
194 | :path: ".symlinks/plugins/location_permissions/ios"
195 | share:
196 | :path: ".symlinks/plugins/share/ios"
197 | shared_preferences:
198 | :path: ".symlinks/plugins/shared_preferences/ios"
199 | url_launcher:
200 | :path: ".symlinks/plugins/url_launcher/ios"
201 |
202 | SPEC CHECKSUMS:
203 | BoringSSL-GRPC: db8764df3204ccea016e1c8dd15d9a9ad63ff318
204 | cloud_firestore: c6e28e89a1bf98faab7fc8fdec20dc6020799cd1
205 | connectivity: 6e94255659cc86dcbef1d452ad3e0491bb1b3e75
206 | Firebase: a2b5951f30ff38fd3b3bdae9c7d340f940fd3c51
207 | firebase_core: 971ffa0fb29e49b80a2ad295eb1ad1cdbd680ec4
208 | FirebaseAnalytics: 48414ae5cbf6976d8a2f7177e0466540e5ab33ce
209 | FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc
210 | FirebaseCore: 8c9e08bce0c72a3affd83927d8184cf244918bc8
211 | FirebaseCoreDiagnostics: 4c04ae09d0ab027c30179828c6bb47764df1bd13
212 | FirebaseCoreDiagnosticsInterop: 6829da2b8d1fc795ff1bd99df751d3788035d2cb
213 | FirebaseFirestore: d65bd28e77a8cdc045be6353c6e1e146efdf92dc
214 | FirebaseInstanceID: 8b42755db950682e7de0d167bc6fb26a57b244af
215 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
216 | geolocator: 80aba2bb48f8c7dfc5a8b70b9d13fc3edc8399c4
217 | google_api_availability: 163b30f802e6148c67f092aa4501c90ddd8eec8d
218 | google_maps_flutter: d0dd62f5a7d39bae61057eb9f52dd778d99c7c6c
219 | GoogleAppMeasurement: 47285fa897e5a125df56b9ef8750a1d81e4598a8
220 | GoogleDataTransport: b0115dbdf1943c998628dca30800ddd263aaa166
221 | GoogleDataTransportCCTSupport: 3451e7d8ba19093e533362a6d78d6d9014c6a037
222 | GoogleMaps: cfee83da305b9aaeccf92c24ac79df11c3003492
223 | GoogleUtilities: 64b5e3982b1b01bda26712affd5c523ef32563cf
224 | "gRPC-C++": 9dfe7b44821e7b3e44aacad2af29d2c21f7cde83
225 | gRPC-Core: c9aef9a261a1247e881b18059b84d597293c9947
226 | leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5
227 | location_permissions: 195ff2a1182fa9029ef3f2653156961ee5a1e40b
228 | nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
229 | Protobuf: 1097ca58584c8d9be81bfbf2c5ff5975648dd87a
230 | Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
231 | share: bae0a282aab4483288913fc4dc0b935d4b491f2e
232 | shared_preferences: 430726339841afefe5142b9c1f50cb6bd7793e01
233 | url_launcher: a1c0cc845906122c4784c542523d8cacbded5626
234 |
235 | PODFILE CHECKSUM: 001830f897fe2dc2b8a50942681e0382c270fff0
236 |
237 | COCOAPODS: 1.8.4
238 |
--------------------------------------------------------------------------------
/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 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
13 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
14 | 57967C0C0ED1AA2EACD64FFB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27A5DEF75EF0749F99E7945A /* Pods_Runner.framework */; };
15 | 656E1AA9230196D30003D545 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 656E1AA8230196D30003D545 /* GoogleService-Info.plist */; };
16 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
17 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
18 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
19 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
20 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
21 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
22 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXCopyFilesBuildPhase section */
26 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
27 | isa = PBXCopyFilesBuildPhase;
28 | buildActionMask = 2147483647;
29 | dstPath = "";
30 | dstSubfolderSpec = 10;
31 | files = (
32 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
33 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
34 | );
35 | name = "Embed Frameworks";
36 | runOnlyForDeploymentPostprocessing = 0;
37 | };
38 | /* End PBXCopyFilesBuildPhase section */
39 |
40 | /* Begin PBXFileReference section */
41 | 09DB52BCC8B6881EB9FDD280 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
42 | 0A2B68C22C74ADDF2F161BBE /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
43 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
44 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
45 | 27A5DEF75EF0749F99E7945A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
46 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
47 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; };
48 | 656E1AA8230196D30003D545 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
49 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
50 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
51 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
52 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
53 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
54 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
55 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
56 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
57 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
58 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
59 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
60 | A810BB879FED628F8CEA584A /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
61 | /* End PBXFileReference section */
62 |
63 | /* Begin PBXFrameworksBuildPhase section */
64 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
65 | isa = PBXFrameworksBuildPhase;
66 | buildActionMask = 2147483647;
67 | files = (
68 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
69 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
70 | 57967C0C0ED1AA2EACD64FFB /* Pods_Runner.framework in Frameworks */,
71 | );
72 | runOnlyForDeploymentPostprocessing = 0;
73 | };
74 | /* End PBXFrameworksBuildPhase section */
75 |
76 | /* Begin PBXGroup section */
77 | 04D276B1E3F22AB365560AB7 /* Frameworks */ = {
78 | isa = PBXGroup;
79 | children = (
80 | 27A5DEF75EF0749F99E7945A /* Pods_Runner.framework */,
81 | );
82 | name = Frameworks;
83 | sourceTree = "";
84 | };
85 | 9740EEB11CF90186004384FC /* Flutter */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 3B80C3931E831B6300D905FE /* App.framework */,
89 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
90 | 9740EEBA1CF902C7004384FC /* Flutter.framework */,
91 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
92 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
93 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
94 | );
95 | name = Flutter;
96 | sourceTree = "";
97 | };
98 | 97C146E51CF9000F007C117D = {
99 | isa = PBXGroup;
100 | children = (
101 | 9740EEB11CF90186004384FC /* Flutter */,
102 | 97C146F01CF9000F007C117D /* Runner */,
103 | 97C146EF1CF9000F007C117D /* Products */,
104 | F4524A957B0E6795C61E2D47 /* Pods */,
105 | 04D276B1E3F22AB365560AB7 /* Frameworks */,
106 | );
107 | sourceTree = "";
108 | };
109 | 97C146EF1CF9000F007C117D /* Products */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 97C146EE1CF9000F007C117D /* Runner.app */,
113 | );
114 | name = Products;
115 | sourceTree = "";
116 | };
117 | 97C146F01CF9000F007C117D /* Runner */ = {
118 | isa = PBXGroup;
119 | children = (
120 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
121 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
122 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
123 | 97C147021CF9000F007C117D /* Info.plist */,
124 | 97C146F11CF9000F007C117D /* Supporting Files */,
125 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
126 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
127 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
128 | 656E1AA8230196D30003D545 /* GoogleService-Info.plist */,
129 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
130 | );
131 | path = Runner;
132 | sourceTree = "";
133 | };
134 | 97C146F11CF9000F007C117D /* Supporting Files */ = {
135 | isa = PBXGroup;
136 | children = (
137 | );
138 | name = "Supporting Files";
139 | sourceTree = "";
140 | };
141 | F4524A957B0E6795C61E2D47 /* Pods */ = {
142 | isa = PBXGroup;
143 | children = (
144 | 09DB52BCC8B6881EB9FDD280 /* Pods-Runner.debug.xcconfig */,
145 | 0A2B68C22C74ADDF2F161BBE /* Pods-Runner.release.xcconfig */,
146 | A810BB879FED628F8CEA584A /* Pods-Runner.profile.xcconfig */,
147 | );
148 | path = Pods;
149 | sourceTree = "";
150 | };
151 | /* End PBXGroup section */
152 |
153 | /* Begin PBXNativeTarget section */
154 | 97C146ED1CF9000F007C117D /* Runner */ = {
155 | isa = PBXNativeTarget;
156 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
157 | buildPhases = (
158 | 4BD9832B9F9D30F2C7A102EC /* [CP] Check Pods Manifest.lock */,
159 | 9740EEB61CF901F6004384FC /* Run Script */,
160 | 97C146EA1CF9000F007C117D /* Sources */,
161 | 97C146EB1CF9000F007C117D /* Frameworks */,
162 | 97C146EC1CF9000F007C117D /* Resources */,
163 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
164 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
165 | 9C8221986A8A7ACD83BA8D8D /* [CP] Embed Pods Frameworks */,
166 | C4D66AB977E7C5D1B39F6986 /* [CP] Copy Pods Resources */,
167 | );
168 | buildRules = (
169 | );
170 | dependencies = (
171 | );
172 | name = Runner;
173 | productName = Runner;
174 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
175 | productType = "com.apple.product-type.application";
176 | };
177 | /* End PBXNativeTarget section */
178 |
179 | /* Begin PBXProject section */
180 | 97C146E61CF9000F007C117D /* Project object */ = {
181 | isa = PBXProject;
182 | attributes = {
183 | LastUpgradeCheck = 1020;
184 | ORGANIZATIONNAME = "The Chromium Authors";
185 | TargetAttributes = {
186 | 97C146ED1CF9000F007C117D = {
187 | CreatedOnToolsVersion = 7.3.1;
188 | DevelopmentTeam = NGBW354GV5;
189 | LastSwiftMigration = 0910;
190 | };
191 | };
192 | };
193 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
194 | compatibilityVersion = "Xcode 3.2";
195 | developmentRegion = en;
196 | hasScannedForEncodings = 0;
197 | knownRegions = (
198 | en,
199 | Base,
200 | );
201 | mainGroup = 97C146E51CF9000F007C117D;
202 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
203 | projectDirPath = "";
204 | projectRoot = "";
205 | targets = (
206 | 97C146ED1CF9000F007C117D /* Runner */,
207 | );
208 | };
209 | /* End PBXProject section */
210 |
211 | /* Begin PBXResourcesBuildPhase section */
212 | 97C146EC1CF9000F007C117D /* Resources */ = {
213 | isa = PBXResourcesBuildPhase;
214 | buildActionMask = 2147483647;
215 | files = (
216 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
217 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
218 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
219 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
220 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
221 | 656E1AA9230196D30003D545 /* GoogleService-Info.plist in Resources */,
222 | );
223 | runOnlyForDeploymentPostprocessing = 0;
224 | };
225 | /* End PBXResourcesBuildPhase section */
226 |
227 | /* Begin PBXShellScriptBuildPhase section */
228 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
229 | isa = PBXShellScriptBuildPhase;
230 | buildActionMask = 2147483647;
231 | files = (
232 | );
233 | inputPaths = (
234 | );
235 | name = "Thin Binary";
236 | outputPaths = (
237 | );
238 | runOnlyForDeploymentPostprocessing = 0;
239 | shellPath = /bin/sh;
240 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
241 | };
242 | 4BD9832B9F9D30F2C7A102EC /* [CP] Check Pods Manifest.lock */ = {
243 | isa = PBXShellScriptBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | );
247 | inputFileListPaths = (
248 | );
249 | inputPaths = (
250 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
251 | "${PODS_ROOT}/Manifest.lock",
252 | );
253 | name = "[CP] Check Pods Manifest.lock";
254 | outputFileListPaths = (
255 | );
256 | outputPaths = (
257 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
258 | );
259 | runOnlyForDeploymentPostprocessing = 0;
260 | shellPath = /bin/sh;
261 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
262 | showEnvVarsInLog = 0;
263 | };
264 | 9740EEB61CF901F6004384FC /* Run Script */ = {
265 | isa = PBXShellScriptBuildPhase;
266 | buildActionMask = 2147483647;
267 | files = (
268 | );
269 | inputPaths = (
270 | );
271 | name = "Run Script";
272 | outputPaths = (
273 | );
274 | runOnlyForDeploymentPostprocessing = 0;
275 | shellPath = /bin/sh;
276 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
277 | };
278 | 9C8221986A8A7ACD83BA8D8D /* [CP] Embed Pods Frameworks */ = {
279 | isa = PBXShellScriptBuildPhase;
280 | buildActionMask = 2147483647;
281 | files = (
282 | );
283 | inputPaths = (
284 | );
285 | name = "[CP] Embed Pods Frameworks";
286 | outputPaths = (
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | shellPath = /bin/sh;
290 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
291 | showEnvVarsInLog = 0;
292 | };
293 | C4D66AB977E7C5D1B39F6986 /* [CP] Copy Pods Resources */ = {
294 | isa = PBXShellScriptBuildPhase;
295 | buildActionMask = 2147483647;
296 | files = (
297 | );
298 | inputPaths = (
299 | );
300 | name = "[CP] Copy Pods Resources";
301 | outputPaths = (
302 | );
303 | runOnlyForDeploymentPostprocessing = 0;
304 | shellPath = /bin/sh;
305 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
306 | showEnvVarsInLog = 0;
307 | };
308 | /* End PBXShellScriptBuildPhase section */
309 |
310 | /* Begin PBXSourcesBuildPhase section */
311 | 97C146EA1CF9000F007C117D /* Sources */ = {
312 | isa = PBXSourcesBuildPhase;
313 | buildActionMask = 2147483647;
314 | files = (
315 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
316 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
317 | );
318 | runOnlyForDeploymentPostprocessing = 0;
319 | };
320 | /* End PBXSourcesBuildPhase section */
321 |
322 | /* Begin PBXVariantGroup section */
323 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
324 | isa = PBXVariantGroup;
325 | children = (
326 | 97C146FB1CF9000F007C117D /* Base */,
327 | );
328 | name = Main.storyboard;
329 | sourceTree = "";
330 | };
331 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
332 | isa = PBXVariantGroup;
333 | children = (
334 | 97C147001CF9000F007C117D /* Base */,
335 | );
336 | name = LaunchScreen.storyboard;
337 | sourceTree = "";
338 | };
339 | /* End PBXVariantGroup section */
340 |
341 | /* Begin XCBuildConfiguration section */
342 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
343 | isa = XCBuildConfiguration;
344 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
345 | buildSettings = {
346 | ALWAYS_SEARCH_USER_PATHS = NO;
347 | CLANG_ANALYZER_NONNULL = YES;
348 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
349 | CLANG_CXX_LIBRARY = "libc++";
350 | CLANG_ENABLE_MODULES = YES;
351 | CLANG_ENABLE_OBJC_ARC = YES;
352 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
353 | CLANG_WARN_BOOL_CONVERSION = YES;
354 | CLANG_WARN_COMMA = YES;
355 | CLANG_WARN_CONSTANT_CONVERSION = YES;
356 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
357 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
358 | CLANG_WARN_EMPTY_BODY = YES;
359 | CLANG_WARN_ENUM_CONVERSION = YES;
360 | CLANG_WARN_INFINITE_RECURSION = YES;
361 | CLANG_WARN_INT_CONVERSION = YES;
362 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
363 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
364 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
365 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
366 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
367 | CLANG_WARN_STRICT_PROTOTYPES = YES;
368 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
369 | CLANG_WARN_UNREACHABLE_CODE = YES;
370 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
371 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
372 | COPY_PHASE_STRIP = NO;
373 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
374 | ENABLE_NS_ASSERTIONS = NO;
375 | ENABLE_STRICT_OBJC_MSGSEND = YES;
376 | GCC_C_LANGUAGE_STANDARD = gnu99;
377 | GCC_NO_COMMON_BLOCKS = YES;
378 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
379 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
380 | GCC_WARN_UNDECLARED_SELECTOR = YES;
381 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
382 | GCC_WARN_UNUSED_FUNCTION = YES;
383 | GCC_WARN_UNUSED_VARIABLE = YES;
384 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
385 | MTL_ENABLE_DEBUG_INFO = NO;
386 | SDKROOT = iphoneos;
387 | TARGETED_DEVICE_FAMILY = "1,2";
388 | VALIDATE_PRODUCT = YES;
389 | };
390 | name = Profile;
391 | };
392 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
393 | isa = XCBuildConfiguration;
394 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
395 | buildSettings = {
396 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
397 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
398 | DEVELOPMENT_TEAM = NGBW354GV5;
399 | ENABLE_BITCODE = NO;
400 | FRAMEWORK_SEARCH_PATHS = (
401 | "$(inherited)",
402 | "$(PROJECT_DIR)/Flutter",
403 | );
404 | INFOPLIST_FILE = Runner/Info.plist;
405 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
406 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
407 | LIBRARY_SEARCH_PATHS = (
408 | "$(inherited)",
409 | "$(PROJECT_DIR)/Flutter",
410 | );
411 | PRODUCT_BUNDLE_IDENTIFIER = dev.fliver.driver;
412 | PRODUCT_NAME = "$(TARGET_NAME)";
413 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
414 | SWIFT_VERSION = 4.0;
415 | TARGETED_DEVICE_FAMILY = 1;
416 | VERSIONING_SYSTEM = "apple-generic";
417 | };
418 | name = Profile;
419 | };
420 | 97C147031CF9000F007C117D /* Debug */ = {
421 | isa = XCBuildConfiguration;
422 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
423 | buildSettings = {
424 | ALWAYS_SEARCH_USER_PATHS = NO;
425 | CLANG_ANALYZER_NONNULL = YES;
426 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
427 | CLANG_CXX_LIBRARY = "libc++";
428 | CLANG_ENABLE_MODULES = YES;
429 | CLANG_ENABLE_OBJC_ARC = YES;
430 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
431 | CLANG_WARN_BOOL_CONVERSION = YES;
432 | CLANG_WARN_COMMA = YES;
433 | CLANG_WARN_CONSTANT_CONVERSION = YES;
434 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
435 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
436 | CLANG_WARN_EMPTY_BODY = YES;
437 | CLANG_WARN_ENUM_CONVERSION = YES;
438 | CLANG_WARN_INFINITE_RECURSION = YES;
439 | CLANG_WARN_INT_CONVERSION = YES;
440 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
441 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
442 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
443 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
444 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
445 | CLANG_WARN_STRICT_PROTOTYPES = YES;
446 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
447 | CLANG_WARN_UNREACHABLE_CODE = YES;
448 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
449 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
450 | COPY_PHASE_STRIP = NO;
451 | DEBUG_INFORMATION_FORMAT = dwarf;
452 | ENABLE_STRICT_OBJC_MSGSEND = YES;
453 | ENABLE_TESTABILITY = YES;
454 | GCC_C_LANGUAGE_STANDARD = gnu99;
455 | GCC_DYNAMIC_NO_PIC = NO;
456 | GCC_NO_COMMON_BLOCKS = YES;
457 | GCC_OPTIMIZATION_LEVEL = 0;
458 | GCC_PREPROCESSOR_DEFINITIONS = (
459 | "DEBUG=1",
460 | "$(inherited)",
461 | );
462 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
463 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
464 | GCC_WARN_UNDECLARED_SELECTOR = YES;
465 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
466 | GCC_WARN_UNUSED_FUNCTION = YES;
467 | GCC_WARN_UNUSED_VARIABLE = YES;
468 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
469 | MTL_ENABLE_DEBUG_INFO = YES;
470 | ONLY_ACTIVE_ARCH = YES;
471 | SDKROOT = iphoneos;
472 | TARGETED_DEVICE_FAMILY = "1,2";
473 | };
474 | name = Debug;
475 | };
476 | 97C147041CF9000F007C117D /* Release */ = {
477 | isa = XCBuildConfiguration;
478 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
479 | buildSettings = {
480 | ALWAYS_SEARCH_USER_PATHS = NO;
481 | CLANG_ANALYZER_NONNULL = YES;
482 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
483 | CLANG_CXX_LIBRARY = "libc++";
484 | CLANG_ENABLE_MODULES = YES;
485 | CLANG_ENABLE_OBJC_ARC = YES;
486 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
487 | CLANG_WARN_BOOL_CONVERSION = YES;
488 | CLANG_WARN_COMMA = YES;
489 | CLANG_WARN_CONSTANT_CONVERSION = YES;
490 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
491 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
492 | CLANG_WARN_EMPTY_BODY = YES;
493 | CLANG_WARN_ENUM_CONVERSION = YES;
494 | CLANG_WARN_INFINITE_RECURSION = YES;
495 | CLANG_WARN_INT_CONVERSION = YES;
496 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
497 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
498 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
499 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
500 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
501 | CLANG_WARN_STRICT_PROTOTYPES = YES;
502 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
503 | CLANG_WARN_UNREACHABLE_CODE = YES;
504 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
505 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
506 | COPY_PHASE_STRIP = NO;
507 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
508 | ENABLE_NS_ASSERTIONS = NO;
509 | ENABLE_STRICT_OBJC_MSGSEND = YES;
510 | GCC_C_LANGUAGE_STANDARD = gnu99;
511 | GCC_NO_COMMON_BLOCKS = YES;
512 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
513 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
514 | GCC_WARN_UNDECLARED_SELECTOR = YES;
515 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
516 | GCC_WARN_UNUSED_FUNCTION = YES;
517 | GCC_WARN_UNUSED_VARIABLE = YES;
518 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
519 | MTL_ENABLE_DEBUG_INFO = NO;
520 | SDKROOT = iphoneos;
521 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
522 | TARGETED_DEVICE_FAMILY = "1,2";
523 | VALIDATE_PRODUCT = YES;
524 | };
525 | name = Release;
526 | };
527 | 97C147061CF9000F007C117D /* Debug */ = {
528 | isa = XCBuildConfiguration;
529 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
530 | buildSettings = {
531 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
532 | CLANG_ENABLE_MODULES = YES;
533 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
534 | DEVELOPMENT_TEAM = NGBW354GV5;
535 | ENABLE_BITCODE = NO;
536 | FRAMEWORK_SEARCH_PATHS = (
537 | "$(inherited)",
538 | "$(PROJECT_DIR)/Flutter",
539 | );
540 | INFOPLIST_FILE = Runner/Info.plist;
541 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
542 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
543 | LIBRARY_SEARCH_PATHS = (
544 | "$(inherited)",
545 | "$(PROJECT_DIR)/Flutter",
546 | );
547 | PRODUCT_BUNDLE_IDENTIFIER = dev.fliver.driver;
548 | PRODUCT_NAME = "$(TARGET_NAME)";
549 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
550 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
551 | SWIFT_SWIFT3_OBJC_INFERENCE = On;
552 | SWIFT_VERSION = 4.0;
553 | TARGETED_DEVICE_FAMILY = 1;
554 | VERSIONING_SYSTEM = "apple-generic";
555 | };
556 | name = Debug;
557 | };
558 | 97C147071CF9000F007C117D /* Release */ = {
559 | isa = XCBuildConfiguration;
560 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
561 | buildSettings = {
562 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
563 | CLANG_ENABLE_MODULES = YES;
564 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
565 | DEVELOPMENT_TEAM = NGBW354GV5;
566 | ENABLE_BITCODE = NO;
567 | FRAMEWORK_SEARCH_PATHS = (
568 | "$(inherited)",
569 | "$(PROJECT_DIR)/Flutter",
570 | );
571 | INFOPLIST_FILE = Runner/Info.plist;
572 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
573 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
574 | LIBRARY_SEARCH_PATHS = (
575 | "$(inherited)",
576 | "$(PROJECT_DIR)/Flutter",
577 | );
578 | PRODUCT_BUNDLE_IDENTIFIER = dev.fliver.driver;
579 | PRODUCT_NAME = "$(TARGET_NAME)";
580 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
581 | SWIFT_SWIFT3_OBJC_INFERENCE = On;
582 | SWIFT_VERSION = 4.0;
583 | TARGETED_DEVICE_FAMILY = 1;
584 | VERSIONING_SYSTEM = "apple-generic";
585 | };
586 | name = Release;
587 | };
588 | /* End XCBuildConfiguration section */
589 |
590 | /* Begin XCConfigurationList section */
591 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
592 | isa = XCConfigurationList;
593 | buildConfigurations = (
594 | 97C147031CF9000F007C117D /* Debug */,
595 | 97C147041CF9000F007C117D /* Release */,
596 | 249021D3217E4FDB00AE95B9 /* Profile */,
597 | );
598 | defaultConfigurationIsVisible = 0;
599 | defaultConfigurationName = Release;
600 | };
601 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
602 | isa = XCConfigurationList;
603 | buildConfigurations = (
604 | 97C147061CF9000F007C117D /* Debug */,
605 | 97C147071CF9000F007C117D /* Release */,
606 | 249021D4217E4FDB00AE95B9 /* Profile */,
607 | );
608 | defaultConfigurationIsVisible = 0;
609 | defaultConfigurationName = Release;
610 | };
611 | /* End XCConfigurationList section */
612 | };
613 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
614 | }
615 |
--------------------------------------------------------------------------------
/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/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 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/.gitattributes:
--------------------------------------------------------------------------------
1 | AppDelegate.swift filter=git-crypt diff=git-crypt
2 | GoogleService-Info.plist filter=git-crypt diff=git-crypt
3 | .gitattributes !filter !diff
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/AppDelegate.swift
--------------------------------------------------------------------------------
/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/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/GoogleService-Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fliverdev/driver/d296448d959a64d2286433b1d7c90060e83657e6/ios/Runner/GoogleService-Info.plist
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | io.flutter.embedded_views_preview
6 |
7 | CFBundleDevelopmentRegion
8 | $(DEVELOPMENT_LANGUAGE)
9 | CFBundleDisplayName
10 | Fliver Driver
11 | CFBundleExecutable
12 | $(EXECUTABLE_NAME)
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | driver
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | $(FLUTTER_BUILD_NAME)
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | $(FLUTTER_BUILD_NUMBER)
27 | LSRequiresIPhoneOS
28 |
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIMainStoryboardFile
32 | Main
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 | UIViewControllerBasedStatusBarAppearance
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/colors.dart';
2 | import 'package:driver/utils/first_page.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_local_notifications/flutter_local_notifications.dart';
5 |
6 | void main() {
7 | WidgetsFlutterBinding.ensureInitialized();
8 | FlutterLocalNotificationsPlugin().cancelAll();
9 | runApp(MyApp());
10 | }
11 |
12 | class MyApp extends StatelessWidget {
13 | @override
14 | Widget build(BuildContext context) {
15 | DateTime currentDateTime = DateTime.now();
16 | DateTime startTime = DateTime(currentDateTime.year, currentDateTime.month,
17 | currentDateTime.day, 6, 0); // 6AM
18 | DateTime endTime = DateTime(currentDateTime.year, currentDateTime.month,
19 | currentDateTime.day, 18, 0); // 6PM
20 | Brightness brightness;
21 |
22 | if (currentDateTime.isAfter(startTime) &&
23 | currentDateTime.isBefore(endTime)) {
24 | // 6AM to 6PM
25 | // light mode
26 | print('It is day!');
27 | brightness = Brightness.light;
28 | } else {
29 | // dark mode
30 | print('It is night!');
31 | brightness = Brightness.dark;
32 | }
33 |
34 | return MaterialApp(
35 | title: 'Fliver Driver',
36 | theme: ThemeData(
37 | fontFamily: 'AvenirNextRounded',
38 | primaryColor: MyColors.primary,
39 | accentColor: MyColors.accent,
40 | brightness: brightness,
41 | ),
42 | home: FirstPage(),
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/pages/chat_page.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:cloud_firestore/cloud_firestore.dart';
4 | import 'package:driver/services/censor.dart';
5 | import 'package:driver/services/firebase_analytics.dart';
6 | import 'package:driver/utils/text_styles.dart';
7 | import 'package:driver/utils/translations.dart';
8 | import 'package:driver/utils/ui_helpers.dart';
9 | import 'package:driver/widgets/message.dart';
10 | import 'package:driver/widgets/message_placeholder.dart';
11 | import 'package:flutter/material.dart';
12 | import 'package:geoflutterfire/geoflutterfire.dart';
13 | import 'package:geolocator/geolocator.dart';
14 | import 'package:google_maps_flutter/google_maps_flutter.dart';
15 | import 'package:shared_preferences/shared_preferences.dart';
16 |
17 | class MyChatPage extends StatefulWidget {
18 | final SharedPreferences helper;
19 | final Position location;
20 | final String language;
21 |
22 | MyChatPage({
23 | Key key,
24 | @required this.helper,
25 | @required this.location,
26 | @required this.language,
27 | }) : super(key: key);
28 |
29 | @override
30 | _MyChatPageState createState() => _MyChatPageState();
31 | }
32 |
33 | class _MyChatPageState extends State {
34 | bool noHotspotMessages = true;
35 | bool isScrollDownVisible = true;
36 | TextEditingController _messageController = TextEditingController();
37 | ScrollController _scrollController = ScrollController();
38 | final messageExpireInterval =
39 | Duration(hours: 1); // timeout to delete old messages
40 |
41 | void _scrollDown() {
42 | _scrollController.animateTo(
43 | _scrollController.position.maxScrollExtent,
44 | curve: Curves.easeOut,
45 | duration: Duration(milliseconds: 300),
46 | );
47 | }
48 |
49 | Message _messageChecker(
50 | DocumentSnapshot doc, List docs, String identity) {
51 | final messageTimestamp = doc.data['timestamp'].toDate();
52 | final timeDiff = DateTime.now().difference(messageTimestamp);
53 | final messageLocation = LatLng(doc.data['location']['geopoint'].latitude,
54 | doc.data['location']['geopoint'].longitude);
55 |
56 | if (timeDiff > messageExpireInterval) {
57 | // if expired, delete the message
58 | final documentId = doc.documentID;
59 | Firestore.instance
60 | .collection('global_chat')
61 | .document(documentId)
62 | .delete();
63 | if (docs.length <= 1) {
64 | return Message(
65 | isMe: identity == doc.data['senderId'],
66 | isNear: false,
67 | senderId: null,
68 | senderName: null,
69 | messageText: null,
70 | destination: null,
71 | location: messageLocation,
72 | timestamp: messageTimestamp,
73 | );
74 | }
75 | } else {
76 | return Message(
77 | isMe: identity == doc.data['senderId'],
78 | isNear: true,
79 | senderId: doc.data['senderId'],
80 | senderName: doc.data['senderName'],
81 | messageText: doc.data['messageText'],
82 | destination: doc.data['destination'],
83 | location: messageLocation,
84 | timestamp: messageTimestamp,
85 | );
86 | }
87 | }
88 |
89 | Future _sendMessage(TextEditingController messageController) async {
90 | String name = widget.helper.getString('userName');
91 | String identity = widget.helper.getString('uuid');
92 | String messageText = messageController.text;
93 |
94 | messageController.clear();
95 |
96 | if (name == null) {
97 | int random = Random().nextInt(1000); // 0 to 999
98 | name = 'Driver ' + random.toString() + '🛺';
99 | widget.helper.setString('userName', name);
100 | }
101 |
102 | if (messageText.length > 0) {
103 | GeoFirePoint geoPoint = Geoflutterfire().point(
104 | latitude: widget.location.latitude,
105 | longitude: widget.location.longitude);
106 | messageText = censor(messageText);
107 |
108 | await Firestore.instance.collection('global_chat').add({
109 | 'senderId': identity,
110 | 'senderName': name,
111 | 'messageText': messageText,
112 | 'destination': null,
113 | 'location': geoPoint.data,
114 | 'timestamp': DateTime.now(),
115 | });
116 | _scrollDown();
117 | logAnalyticsEvent('message_sent_driver');
118 | }
119 | }
120 |
121 | @override
122 | Widget build(BuildContext context) {
123 | String identity = widget.helper.getString('uuid');
124 |
125 | return Scaffold(
126 | backgroundColor: invertInvertColorsStrong(context),
127 | body: Container(
128 | child: Column(
129 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
130 | crossAxisAlignment: CrossAxisAlignment.center,
131 | children: [
132 | Padding(
133 | padding: EdgeInsets.only(
134 | top: 40.0,
135 | left: 15.0,
136 | ),
137 | child: Row(
138 | mainAxisAlignment: MainAxisAlignment.start,
139 | children: [
140 | IconButton(
141 | icon: Icon(Icons.arrow_back_ios),
142 | tooltip: 'Go back',
143 | iconSize: 20.0,
144 | color: invertColorsStrong(context),
145 | onPressed: () {
146 | Navigator.pop(context);
147 | },
148 | ),
149 | Text(
150 | chat(widget.language),
151 | style: isThemeCurrentlyDark(context)
152 | ? TitleStyles.white
153 | : TitleStyles.black,
154 | ),
155 | ],
156 | ),
157 | ),
158 | Expanded(
159 | child: Padding(
160 | padding: EdgeInsets.only(
161 | left: 15.0,
162 | right: 15.0,
163 | ),
164 | child: StreamBuilder(
165 | stream: Firestore.instance
166 | .collection('global_chat')
167 | .orderBy('timestamp')
168 | .snapshots(),
169 | builder: (context, snapshot) {
170 | if (!snapshot.hasData)
171 | return messagePlaceholder(
172 | context, loadingMessages(widget.language));
173 |
174 | List docs = snapshot.data.documents;
175 |
176 | if (docs.isEmpty)
177 | return messagePlaceholder(
178 | context, messagePlaceholderText(widget.language));
179 |
180 | List messages = docs
181 | .map((doc) => _messageChecker(doc, docs, identity))
182 | .toList();
183 |
184 | return Stack(
185 | children: [
186 | ListView(
187 | controller: _scrollController,
188 | children: [
189 | ...messages,
190 | ],
191 | ),
192 | Positioned(
193 | bottom: 10.0,
194 | right: 7.5,
195 | child: Visibility(
196 | visible: isScrollDownVisible,
197 | child: FloatingActionButton(
198 | mini: true,
199 | child: Icon(Icons.keyboard_arrow_down),
200 | foregroundColor: invertInvertColorsTheme(context),
201 | backgroundColor: invertColorsTheme(context),
202 | onPressed: () {
203 | _scrollDown();
204 | setState(() {
205 | isScrollDownVisible = false;
206 | });
207 | },
208 | ),
209 | ),
210 | ),
211 | ],
212 | );
213 | },
214 | ),
215 | ),
216 | ),
217 | SizedBox(
218 | height: 10.0,
219 | ),
220 | Container(
221 | child: Row(
222 | mainAxisAlignment: MainAxisAlignment.center,
223 | crossAxisAlignment: CrossAxisAlignment.center,
224 | children: [
225 | SizedBox(
226 | width: 15.0,
227 | ),
228 | Expanded(
229 | child: TextField(
230 | controller: _messageController,
231 | textCapitalization: TextCapitalization.sentences,
232 | decoration: InputDecoration(
233 | hintText: sendMessageText(widget.language),
234 | border: UnderlineInputBorder(
235 | borderSide: BorderSide(
236 | color: invertColorsStrong(context),
237 | ),
238 | ),
239 | focusedBorder: UnderlineInputBorder(
240 | borderSide: BorderSide(
241 | color: invertColorsTheme(context),
242 | ),
243 | ),
244 | ),
245 | ),
246 | ),
247 | SizedBox(
248 | width: 15.0,
249 | ),
250 | FloatingActionButton(
251 | heroTag: 'chat',
252 | foregroundColor: invertInvertColorsTheme(context),
253 | backgroundColor: invertColorsTheme(context),
254 | child: Icon(Icons.send),
255 | elevation: 5.0,
256 | tooltip: 'Send',
257 | onPressed: () {
258 | _sendMessage(_messageController);
259 | setState(() {
260 | isScrollDownVisible = false;
261 | });
262 | },
263 | ),
264 | SizedBox(
265 | width: 15.0,
266 | ),
267 | ],
268 | ),
269 | ),
270 | SizedBox(
271 | height: 10.0,
272 | ),
273 | ],
274 | ),
275 | ),
276 | );
277 | }
278 | }
279 |
--------------------------------------------------------------------------------
/lib/pages/map_view_page.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:cloud_firestore/cloud_firestore.dart';
4 | import 'package:driver/services/firebase_analytics.dart';
5 | import 'package:driver/utils/map_helper.dart';
6 | import 'package:driver/utils/map_marker.dart';
7 | import 'package:driver/utils/map_styles.dart';
8 | import 'package:driver/utils/text_styles.dart';
9 | import 'package:driver/utils/translations.dart';
10 | import 'package:driver/utils/ui_helpers.dart';
11 | import 'package:driver/widgets/fetching_location.dart';
12 | import 'package:driver/widgets/no_connection.dart';
13 | import 'package:fluster/fluster.dart';
14 | import 'package:flutter/cupertino.dart';
15 | import 'package:flutter/material.dart';
16 | import 'package:flutter_offline/flutter_offline.dart';
17 | import 'package:geolocator/geolocator.dart';
18 | import 'package:google_maps_flutter/google_maps_flutter.dart';
19 | import 'package:share/share.dart';
20 | import 'package:shared_preferences/shared_preferences.dart';
21 |
22 | import 'chat_page.dart';
23 |
24 | class MyMapViewPage extends StatefulWidget {
25 | final SharedPreferences helper;
26 | final String identity;
27 | final String language;
28 |
29 | MyMapViewPage(
30 | {Key key,
31 | @required this.helper,
32 | @required this.identity,
33 | @required this.language})
34 | : super(key: key);
35 |
36 | @override
37 | _MyMapViewPageState createState() => _MyMapViewPageState();
38 | }
39 |
40 | class _MyMapViewPageState extends State {
41 | /// Minimum zoom at which the markers will cluster
42 | final int _minClusterZoom = 0;
43 |
44 | /// Maximum zoom at which the markers will cluster
45 | final int _maxClusterZoom = 19;
46 |
47 | /// [Fluster] instance used to manage the clusters
48 | Fluster _clusterManager;
49 |
50 | /// Url image used on cluster markers
51 | final String _clusterImageUrl = 'https://i.ibb.co/XYJyqWs/arrow-256x256.png';
52 |
53 | var currentLocation;
54 | var locationAnimation = 0; // used to switch between 2 kinds of animations
55 |
56 | final markerColor = 165.0; // fliver green marker
57 | final zoom = [15.0, 17.5]; // zoom levels (0/1)
58 | final bearing = [0.0, 90.0]; // bearing level (0/1)
59 | final tilt = [0.0, 45.0]; // axis tilt (0/1)
60 |
61 | double _currentZoom = 15;
62 |
63 | final displayMarkersRadius = 10000.0; // radius up to which markers are loaded
64 |
65 | final markerRefreshInterval =
66 | Duration(seconds: 5); // timeout to repopulate markers
67 | final markerExpireInterval =
68 | Duration(minutes: 15); // timeout to delete old markers
69 |
70 | bool isMarkerDeleted = false; // to check if marker was deleted
71 |
72 | GoogleMapController mapController;
73 |
74 | Future position;
75 | static Map markers = {};
76 | final Set _markers = Set.of(markers.values);
77 |
78 | Set hotspots = {};
79 | GlobalKey scaffoldKey =
80 | GlobalKey(); // for snackbar
81 |
82 | @override
83 | void initState() {
84 | print('initState() called');
85 | super.initState();
86 | position = _setCurrentLocation();
87 | print('UUID is ${widget.identity}');
88 | } // gets current user location when the app launches
89 |
90 | void initCluster(List markersListInit) async {
91 | _clusterManager = await MapHelper.initClusterManager(
92 | markersListInit,
93 | _minClusterZoom,
94 | _maxClusterZoom,
95 | _clusterImageUrl,
96 | );
97 |
98 | _updateMarkers();
99 | }
100 |
101 | /// Gets the markers and clusters to be displayed on the map for the current zoom level and
102 | /// updates state.
103 | void _updateMarkers([double updatedZoom]) {
104 | if (_clusterManager == null || updatedZoom == _currentZoom) return;
105 |
106 | if (updatedZoom != null) {
107 | _currentZoom = updatedZoom;
108 | }
109 |
110 | _markers
111 | ..clear()
112 | ..addAll(MapHelper.getClusterMarkers(_clusterManager, _currentZoom));
113 | }
114 |
115 | void _onMapCreated(GoogleMapController controller) {
116 | print('_onMapCreated() called');
117 |
118 | mapController = controller;
119 | mapController
120 | .setMapStyle(isThemeCurrentlyDark(context) ? darkMap : lightMap);
121 |
122 | _fetchMarkersFromDb();
123 |
124 | Timer.periodic(markerRefreshInterval, (Timer t) {
125 | print('$markerRefreshInterval seconds over, refreshing...');
126 | _fetchMarkersFromDb(); // updates markers every 10 seconds
127 | });
128 | }
129 |
130 | Future _setCurrentLocation() async {
131 | print('_setCurrentLocation() called');
132 | currentLocation = await Geolocator().getCurrentPosition();
133 | return currentLocation;
134 | }
135 |
136 | void _fetchMarkersFromDb() {
137 | print('_fetchMarkersFromDb() called');
138 | Firestore.instance.collection('markers').getDocuments().then((docs) async {
139 | final docLength = docs.documents.length;
140 | final clients = List(docLength);
141 | for (int i = 0; i < docLength; i++) {
142 | clients[i] = docs.documents[i];
143 | }
144 | currentLocation = await Geolocator().getCurrentPosition();
145 | _populateMarkers(clients);
146 | });
147 | } // fetches markers from firestore
148 |
149 | void _deleteMarker(documentId) {
150 | print('_deleteMarker() called');
151 | print('Deleting marker $documentId...');
152 | //isMyMarkerFetched = false;
153 | Firestore.instance.collection('markers').document(documentId).delete();
154 | setState(() {
155 | markers.remove(MarkerId(documentId));
156 | });
157 | } // deletes markers from firestore
158 |
159 | Future _populateMarkers(clients) async {
160 | List markersList = [];
161 |
162 | print('_populateMarkers() called');
163 | markers.clear();
164 |
165 | for (int i = 0; i < clients.length; i++) {
166 | print('_populateMarkers() loop ${i + 1}/${clients.length}');
167 | final documentId = clients[i].documentID;
168 | final markerId = MarkerId(documentId);
169 | final markerData = clients[i].data;
170 |
171 | final markerPosition = LatLng(markerData['position']['geopoint'].latitude,
172 | markerData['position']['geopoint'].longitude);
173 | final markerDestination = markerData['destination'];
174 | final markerTimestamp = markerData['timestamp'].toDate();
175 |
176 | final timeDiff = DateTime.now().difference(markerTimestamp);
177 |
178 | markersList.add(
179 | Markers(
180 | id: MarkerId(documentId).toString(),
181 | position: LatLng(markerData['position']['geopoint'].latitude,
182 | markerData['position']['geopoint'].longitude),
183 | icon: BitmapDescriptor.defaultMarkerWithHue(markerColor),
184 | infoWindow: InfoWindow(
185 | title: markerDestination == null
186 | ? markerTextLooking(widget.language)
187 | : markerTextDestination(widget.language, markerDestination),
188 | ),
189 | ),
190 | );
191 |
192 | final distance = await Geolocator().distanceBetween(
193 | currentLocation.latitude.toDouble(),
194 | currentLocation.longitude.toDouble(),
195 | markerPosition.latitude.toDouble(),
196 | markerPosition.longitude.toDouble(),
197 | ); // distance between my location and other markers
198 |
199 | if (timeDiff > markerExpireInterval) {
200 | // if the marker is expired, it gets deleted and doesn't continue
201 | print('Marker $markerId expired, deleting...');
202 | _deleteMarker(documentId);
203 | isMarkerDeleted = true;
204 | }
205 |
206 | final marker = Marker(
207 | markerId: markerId,
208 | position: markerPosition,
209 | icon: BitmapDescriptor.defaultMarkerWithHue(markerColor),
210 | );
211 |
212 | initCluster(markersList);
213 |
214 | setState(() {
215 | if (displayMarkersRadius >= distance) {
216 | markers[markerId] = marker;
217 | } // adds markers within 10km of my marker
218 | });
219 | }
220 | }
221 |
222 | void _animateToLocation(location, animation) {
223 | print('_animateToLocation called');
224 | mapController.animateCamera(
225 | CameraUpdate.newCameraPosition(
226 | CameraPosition(
227 | target: LatLng(location.latitude, location.longitude),
228 | zoom: zoom[animation],
229 | bearing: bearing[animation],
230 | tilt: tilt[animation],
231 | ),
232 | ),
233 | );
234 | } // dat cool animation tho
235 |
236 | @override
237 | Widget build(BuildContext context) {
238 | print('Widget build() called');
239 |
240 | return OfflineBuilder(connectivityBuilder: (
241 | BuildContext context,
242 | ConnectivityResult connectivity,
243 | Widget child,
244 | ) {
245 | if (connectivity == ConnectivityResult.none) {
246 | return NoConnection(language: widget.language);
247 | } else {
248 | return child;
249 | }
250 | }, builder: (BuildContext context) {
251 | // when there is proper internet
252 | return FutureBuilder(
253 | future: position,
254 | builder: (context, data) {
255 | if (!data.hasData) {
256 | return FetchingLocation(language: widget.language);
257 | } else {
258 | // when current location is obtained
259 | return Scaffold(
260 | key: scaffoldKey,
261 | body: Container(
262 | child: Stack(
263 | children: [
264 | GoogleMap(
265 | onMapCreated: _onMapCreated,
266 | myLocationEnabled: true,
267 | myLocationButtonEnabled: false,
268 | compassEnabled: false,
269 | mapToolbarEnabled: true,
270 | initialCameraPosition: CameraPosition(
271 | target: LatLng(currentLocation.latitude,
272 | currentLocation.longitude),
273 | zoom: _currentZoom,
274 | bearing: bearing[0],
275 | tilt: tilt[0],
276 | ),
277 | markers: _markers,
278 | onCameraMove: (position) =>
279 | _updateMarkers(position.zoom),
280 | ),
281 | Positioned(
282 | top: 45.0,
283 | left: 20.0,
284 | right: 20.0,
285 | child: Row(
286 | mainAxisAlignment: MainAxisAlignment.start,
287 | children: [
288 | Container(
289 | width: 95.0,
290 | height: 30.0,
291 | child: isThemeCurrentlyDark(context)
292 | ? Image.asset(
293 | 'assets/logo/text-green.png',
294 | fit: BoxFit.cover,
295 | )
296 | : Image.asset(
297 | 'assets/logo/text-black.png',
298 | fit: BoxFit.cover,
299 | ),
300 | ),
301 | SizedBox(
302 | width: 130.0,
303 | ),
304 | RaisedButton(
305 | child: Text(
306 | shareButton(widget.language),
307 | style: isThemeCurrentlyDark(context)
308 | ? BodyStyles.black
309 | : BodyStyles.white,
310 | ),
311 | color: invertColorsTheme(context),
312 | elevation: 3.0,
313 | shape: RoundedRectangleBorder(
314 | borderRadius:
315 | BorderRadius.all(Radius.circular(5.0))),
316 | onPressed: () {
317 | Share.share(
318 | 'Fliver app download karo aur free mein mere saath bhada dhundho! https://play.google.com/store/apps/details?id=dev.fliver.driver');
319 | logAnalyticsEvent('driver_share');
320 | },
321 | ),
322 | ],
323 | ),
324 | ),
325 | ],
326 | ),
327 | ),
328 | floatingActionButtonLocation:
329 | FloatingActionButtonLocation.centerFloat,
330 | floatingActionButton: Row(
331 | mainAxisAlignment: MainAxisAlignment.center,
332 | crossAxisAlignment: CrossAxisAlignment.center,
333 | children: [
334 | FloatingActionButton(
335 | heroTag: 'chat',
336 | child: Icon(Icons.message),
337 | foregroundColor: invertInvertColorsTheme(context),
338 | backgroundColor: invertColorsTheme(context),
339 | tooltip: chat(widget.language),
340 | onPressed: () {
341 | Navigator.push(context,
342 | CupertinoPageRoute(builder: (context) {
343 | return MyChatPage(
344 | helper: widget.helper,
345 | location: currentLocation,
346 | language: widget.language,
347 | );
348 | }));
349 | },
350 | ),
351 | SizedBox(
352 | width: 10.0,
353 | ),
354 | FloatingActionButton(
355 | child: Icon(Icons.my_location),
356 | foregroundColor: invertInvertColorsTheme(context),
357 | backgroundColor: invertColorsTheme(context),
358 | tooltip: recenter(widget.language),
359 | onPressed: () async {
360 | currentLocation =
361 | await Geolocator().getCurrentPosition();
362 | locationAnimation = 0;
363 | _animateToLocation(currentLocation, locationAnimation);
364 | },
365 | )
366 | ],
367 | ),
368 | );
369 | }
370 | });
371 | });
372 | }
373 | }
374 |
--------------------------------------------------------------------------------
/lib/pages/onboarding_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/pages/map_view_page.dart';
2 | import 'package:driver/services/firebase_analytics.dart';
3 | import 'package:driver/utils/colors.dart';
4 | import 'package:driver/utils/text_styles.dart';
5 | import 'package:driver/utils/translations.dart';
6 | import 'package:flutter/cupertino.dart';
7 | import 'package:flutter/material.dart';
8 | import 'package:shared_preferences/shared_preferences.dart';
9 |
10 | class MyOnboardingPage1 extends StatelessWidget {
11 | final SharedPreferences helper;
12 | final bool flag;
13 | final String identity;
14 | MyOnboardingPage1(
15 | {Key key,
16 | @required this.helper,
17 | @required this.flag,
18 | @required this.identity})
19 | : super(key: key);
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | return Material(
24 | child: Container(
25 | color: MyColors.primary,
26 | child: Row(
27 | mainAxisAlignment: MainAxisAlignment.center,
28 | crossAxisAlignment: CrossAxisAlignment.center,
29 | children: [
30 | Column(
31 | mainAxisAlignment: MainAxisAlignment.center,
32 | crossAxisAlignment: CrossAxisAlignment.center,
33 | children: [
34 | Container(
35 | width: 170.0,
36 | height: 54.0,
37 | child: Image.asset(
38 | 'assets/logo/text-black.png',
39 | fit: BoxFit.cover,
40 | ),
41 | ),
42 | SizedBox(
43 | height: 50.0,
44 | ),
45 | Container(
46 | width: 150.0,
47 | height: 150.0,
48 | child: Image.asset(
49 | 'assets/other/rickshaw.png',
50 | fit: BoxFit.cover,
51 | ),
52 | ),
53 | SizedBox(
54 | height: 50.0,
55 | ),
56 | Text(
57 | 'Choose a language:',
58 | style: TitleStyles.black,
59 | textAlign: TextAlign.center,
60 | ),
61 | SizedBox(
62 | height: 10.0,
63 | ),
64 | Row(
65 | children: [
66 | RaisedButton(
67 | child: Text('English'),
68 | color: MyColors.black,
69 | textColor: MyColors.white,
70 | elevation: 3.0,
71 | shape: RoundedRectangleBorder(
72 | borderRadius: BorderRadius.all(Radius.circular(5.0))),
73 | onPressed: () {
74 | helper.setString('language', 'en');
75 | logAnalyticsEvent('english');
76 |
77 | Navigator.push(context,
78 | CupertinoPageRoute(builder: (context) {
79 | return MyOnboardingPage2(
80 | helper: helper,
81 | identity: identity,
82 | language: 'en');
83 | }));
84 | },
85 | ),
86 | SizedBox(
87 | width: 10.0,
88 | ),
89 | RaisedButton(
90 | child: Text('हिंदी'),
91 | color: MyColors.black,
92 | textColor: MyColors.white,
93 | elevation: 3.0,
94 | shape: RoundedRectangleBorder(
95 | borderRadius: BorderRadius.all(Radius.circular(5.0))),
96 | onPressed: () {
97 | helper.setString('language', 'hi');
98 | logAnalyticsEvent('hindi');
99 |
100 | Navigator.push(context,
101 | CupertinoPageRoute(builder: (context) {
102 | return MyOnboardingPage2(
103 | helper: helper,
104 | identity: identity,
105 | language: 'hi');
106 | }));
107 | },
108 | ),
109 | SizedBox(
110 | width: 10.0,
111 | ),
112 | RaisedButton(
113 | child: Text('मराठी'),
114 | color: MyColors.black,
115 | textColor: MyColors.white,
116 | elevation: 3.0,
117 | shape: RoundedRectangleBorder(
118 | borderRadius: BorderRadius.all(Radius.circular(5.0))),
119 | onPressed: () {
120 | helper.setString('language', 'mr');
121 | logAnalyticsEvent('marathi');
122 |
123 | Navigator.push(context,
124 | CupertinoPageRoute(builder: (context) {
125 | return MyOnboardingPage2(
126 | helper: helper,
127 | identity: identity,
128 | language: 'mr');
129 | }));
130 | },
131 | ),
132 | ],
133 | ),
134 | ],
135 | ),
136 | ],
137 | ),
138 | ),
139 | );
140 | }
141 | }
142 |
143 | class MyOnboardingPage2 extends StatelessWidget {
144 | final SharedPreferences helper;
145 | final String identity;
146 | final String language;
147 | MyOnboardingPage2(
148 | {Key key,
149 | @required this.helper,
150 | @required this.identity,
151 | @required this.language})
152 | : super(key: key);
153 |
154 | @override
155 | Widget build(BuildContext context) {
156 | double width = MediaQuery.of(context).size.width * 0.8;
157 | return Material(
158 | child: Container(
159 | color: MyColors.white,
160 | child: Row(
161 | mainAxisAlignment: MainAxisAlignment.center,
162 | crossAxisAlignment: CrossAxisAlignment.center,
163 | children: [
164 | Container(
165 | width: width,
166 | child: Column(
167 | mainAxisAlignment: MainAxisAlignment.start,
168 | crossAxisAlignment: CrossAxisAlignment.center,
169 | children: [
170 | SizedBox(
171 | height: 100.0,
172 | ),
173 | Text(
174 | onboardingPageHeading(language),
175 | style: HeadingStyles.black,
176 | ),
177 | SizedBox(
178 | height: 40.0,
179 | ),
180 | Row(
181 | mainAxisAlignment: MainAxisAlignment.start,
182 | crossAxisAlignment: CrossAxisAlignment.start,
183 | children: [
184 | Column(
185 | mainAxisAlignment: MainAxisAlignment.start,
186 | crossAxisAlignment: CrossAxisAlignment.start,
187 | children: [
188 | Container(
189 | width: 39.0,
190 | height: 42.0,
191 | child: Image.asset(
192 | 'assets/other/cluster.png',
193 | fit: BoxFit.cover,
194 | ),
195 | ),
196 | ],
197 | ),
198 | SizedBox(
199 | width: 10.0,
200 | ),
201 | Expanded(
202 | child: Column(
203 | mainAxisAlignment: MainAxisAlignment.start,
204 | crossAxisAlignment: CrossAxisAlignment.start,
205 | children: [
206 | Text(
207 | onboardingPageTitle1(language),
208 | style: SubHeadingStyles.black,
209 | ),
210 | SizedBox(
211 | height: 5.0,
212 | ),
213 | Text(
214 | onboardingPageTitle1Body1(language),
215 | style: BodyStyles.black,
216 | ),
217 | ],
218 | ),
219 | ),
220 | ],
221 | ),
222 | SizedBox(
223 | height: 30.0,
224 | ),
225 | Row(
226 | mainAxisAlignment: MainAxisAlignment.start,
227 | crossAxisAlignment: CrossAxisAlignment.start,
228 | children: [
229 | Column(
230 | mainAxisAlignment: MainAxisAlignment.start,
231 | crossAxisAlignment: CrossAxisAlignment.start,
232 | children: [
233 | Container(
234 | width: 32.0,
235 | height: 38.0,
236 | child: Image.asset(
237 | 'assets/other/notification.png',
238 | fit: BoxFit.cover,
239 | ),
240 | ),
241 | ],
242 | ),
243 | SizedBox(
244 | width: 10.0,
245 | ),
246 | Expanded(
247 | child: Column(
248 | mainAxisAlignment: MainAxisAlignment.start,
249 | crossAxisAlignment: CrossAxisAlignment.start,
250 | children: [
251 | Text(
252 | onboardingPageTitle2(language),
253 | style: SubHeadingStyles.black,
254 | ),
255 | SizedBox(
256 | height: 5.0,
257 | ),
258 | Text(
259 | onboardingPageTitle2Body2(language),
260 | style: BodyStyles.black,
261 | ),
262 | ],
263 | ),
264 | ),
265 | ],
266 | ),
267 | SizedBox(
268 | height: 30.0,
269 | ),
270 | Row(
271 | mainAxisAlignment: MainAxisAlignment.start,
272 | crossAxisAlignment: CrossAxisAlignment.start,
273 | children: [
274 | Column(
275 | mainAxisAlignment: MainAxisAlignment.start,
276 | crossAxisAlignment: CrossAxisAlignment.start,
277 | children: [
278 | Container(
279 | width: 25.0,
280 | height: 36.0,
281 | child: Image.asset(
282 | 'assets/other/rupee.png',
283 | fit: BoxFit.cover,
284 | ),
285 | ),
286 | ],
287 | ),
288 | SizedBox(
289 | width: 10.0,
290 | ),
291 | Expanded(
292 | child: Column(
293 | mainAxisAlignment: MainAxisAlignment.start,
294 | crossAxisAlignment: CrossAxisAlignment.start,
295 | children: [
296 | Text(
297 | onboardingPageTitle3(language),
298 | style: SubHeadingStyles.black,
299 | ),
300 | SizedBox(
301 | height: 5.0,
302 | ),
303 | Text(
304 | onboardingPageTitle3Body3(language),
305 | style: BodyStyles.black,
306 | ),
307 | ],
308 | ),
309 | ),
310 | ],
311 | ),
312 | SizedBox(
313 | height: 40.0,
314 | ),
315 | ButtonTheme(
316 | height: 50.0,
317 | minWidth: 180.0,
318 | child: RaisedButton(
319 | child: Text(
320 | onboardingPageButton(language),
321 | style: BodyStyles.white,
322 | ),
323 | color: MyColors.black,
324 | splashColor: MyColors.primary,
325 | elevation: 3.0,
326 | shape: RoundedRectangleBorder(
327 | borderRadius: BorderRadius.all(Radius.circular(50.0)),
328 | ),
329 | onPressed: () async {
330 | helper.setBool('isFirstLaunch', false);
331 | helper.setString('uuid', identity);
332 |
333 | Navigator.pushAndRemoveUntil(
334 | context,
335 | MaterialPageRoute(
336 | builder: (context) => MyMapViewPage(
337 | helper: helper,
338 | identity: identity,
339 | language: language,
340 | )),
341 | (Route route) => false);
342 | },
343 | ),
344 | ),
345 | ],
346 | ),
347 | ),
348 | ],
349 | ),
350 | ),
351 | );
352 | }
353 | }
354 |
--------------------------------------------------------------------------------
/lib/services/censor.dart:
--------------------------------------------------------------------------------
1 | String censor(String messageText) {
2 | final List profanity = [
3 | 'fuck',
4 | 'bitch',
5 | 'bastard',
6 | 'sex',
7 | 'shit',
8 | 'cunt',
9 | 'pussy',
10 | 'vagina',
11 | 'dick',
12 | 'penis',
13 | 'cock',
14 | 'ass',
15 | 'boob',
16 | 'breast',
17 | 'tits',
18 | 'nigg',
19 | 'whore',
20 | 'prostitute',
21 | 'retard',
22 | 'fag',
23 | 'chut',
24 | 'chod',
25 | 'gaand',
26 | 'bhosdike',
27 | 'kamina',
28 | 'kutta',
29 | 'rundi',
30 | 'randi',
31 | 'saala',
32 | 'bhangi',
33 | ]; // add more LOL
34 |
35 | profanity.forEach((badWord) {
36 | String lowerCaseMessage = messageText.toLowerCase();
37 | if (lowerCaseMessage.contains(badWord)) {
38 | messageText = lowerCaseMessage.replaceAll(badWord, '****');
39 | }
40 | });
41 | return messageText;
42 | }
43 |
--------------------------------------------------------------------------------
/lib/services/firebase_analytics.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_analytics/firebase_analytics.dart';
2 |
3 | final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics();
4 |
5 | Future logAnalyticsEvent(String event) async {
6 | print('Logging event $event...');
7 | await firebaseAnalytics.logEvent(name: '$event');
8 | }
9 |
--------------------------------------------------------------------------------
/lib/utils/colors.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class MyColors {
5 | static const primary = Color(0xff1de9b6);
6 | static const accent = Color(0xff212121);
7 | static const translucent = Color(0x60212121);
8 | static const light = Color(0xffcfd8dc);
9 | static const dark = Color(0xff424242);
10 | static const white = Color(0xfffafafa);
11 | static const black = Color(0xff212121);
12 | } //main app colors
13 |
14 | class MaterialColors {
15 | static const red = Color(0xffd50000);
16 | static const blue = Color(0xff2962ff);
17 | static const yellow = Color(0xffffd600);
18 | static const green = Color(0xff00c853);
19 | static const purple = Color(0xffaa00ff);
20 | static const pink = Color(0xffc51162);
21 | static const orange = Color(0xffff6d00);
22 | } //material design colors
23 |
24 | class ShadowColors {
25 | static const light = Color(0x80718792);
26 | static const dark = Color(0x801c313a);
27 | } //shadow colors for raised elements
28 |
--------------------------------------------------------------------------------
/lib/utils/first_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/pages/map_view_page.dart';
2 | import 'package:driver/pages/onboarding_page.dart';
3 | import 'package:driver/utils/ui_helpers.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:shared_preferences/shared_preferences.dart';
6 | import 'package:uuid/uuid.dart';
7 |
8 | class FirstPage extends StatefulWidget {
9 | @override
10 | _FirstPageState createState() => _FirstPageState();
11 | }
12 |
13 | class _FirstPageState extends State {
14 | void firstPageChecker() async {
15 | SharedPreferences prefs = await SharedPreferences.getInstance();
16 | bool isFirstLaunch = prefs.getBool('isFirstLaunch') ?? true;
17 | String uuid = prefs.getString('uuid') ?? Uuid().v4();
18 | String lang = prefs.getString('language') ?? '';
19 | // generates random uuid as string
20 |
21 | if (isFirstLaunch) {
22 | Navigator.pushAndRemoveUntil(
23 | context,
24 | MaterialPageRoute(
25 | builder: (context) => MyOnboardingPage1(
26 | helper: prefs,
27 | flag: isFirstLaunch,
28 | identity: uuid,
29 | )),
30 | (Route route) => false);
31 | // very first launch since install
32 | } else {
33 | Navigator.pushAndRemoveUntil(
34 | context,
35 | MaterialPageRoute(
36 | builder: (context) =>
37 | MyMapViewPage(helper: prefs, identity: uuid, language: lang)),
38 | (Route route) => false);
39 | }
40 | }
41 |
42 | @override
43 | void initState() {
44 | super.initState();
45 | firstPageChecker();
46 | }
47 |
48 | Widget build(BuildContext context) {
49 | return Container(
50 | color: invertInvertColorsStrong(context), // blank screen
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/utils/map_helper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:io';
3 | import 'dart:typed_data';
4 | import 'dart:ui';
5 |
6 | import 'package:driver/utils/map_marker.dart';
7 | import 'package:fluster/fluster.dart';
8 | import 'package:flutter_cache_manager/flutter_cache_manager.dart';
9 | import 'package:google_maps_flutter/google_maps_flutter.dart';
10 |
11 | /// In here we are encapsulating all the logic required to get marker icons from url images
12 | /// and to show clusters using the [Fluster] package.
13 | class MapHelper {
14 | /// If there is a cached file and it's not old returns the cached marker image file
15 | /// else it will download the image and save it on the temp dir and return that file.
16 | ///
17 | /// This mechanism is possible using the [DefaultCacheManager] package and is useful
18 | /// to improve load times on the next map loads, the first time will always take more
19 | /// time to download the file and set the marker image.
20 | ///
21 | /// You can resize the marker image by providing a [targetWidth].
22 | static Future getMarkerImageFromUrl(
23 | String url, {
24 | int targetWidth,
25 | }) async {
26 | assert(url != null);
27 |
28 | final File markerImageFile = await DefaultCacheManager().getSingleFile(url);
29 |
30 | Uint8List markerImageBytes = await markerImageFile.readAsBytes();
31 |
32 | if (targetWidth != null) {
33 | markerImageBytes = await _resizeImageBytes(
34 | markerImageBytes,
35 | targetWidth,
36 | );
37 | }
38 |
39 | return BitmapDescriptor.fromBytes(markerImageBytes);
40 | }
41 |
42 | /// Resizes the given [imageBytes] with the [targetWidth].
43 | ///
44 | /// We don't want the marker image to be too big so we might need to resize the image.
45 | static Future _resizeImageBytes(
46 | Uint8List imageBytes,
47 | int targetWidth,
48 | ) async {
49 | assert(imageBytes != null);
50 | assert(targetWidth != null);
51 |
52 | final Codec imageCodec = await instantiateImageCodec(
53 | imageBytes,
54 | targetWidth: targetWidth,
55 | );
56 |
57 | final FrameInfo frameInfo = await imageCodec.getNextFrame();
58 |
59 | final ByteData byteData = await frameInfo.image.toByteData(
60 | format: ImageByteFormat.png,
61 | );
62 |
63 | return byteData.buffer.asUint8List();
64 | }
65 |
66 | /// Inits the cluster manager with all the [MapMarker] to be displayed on the map.
67 | /// Here we're also setting up the cluster marker itself, also with an [clusterImageUrl].
68 | ///
69 | /// For more info about customizing your clustering logic check the [Fluster] constructor.
70 | static Future> initClusterManager(
71 | List markers,
72 | int minZoom,
73 | int maxZoom,
74 | String clusterImageUrl,
75 | ) async {
76 | assert(markers != null);
77 | assert(minZoom != null);
78 | assert(maxZoom != null);
79 | assert(clusterImageUrl != null);
80 |
81 | final BitmapDescriptor clusterImage =
82 | await MapHelper.getMarkerImageFromUrl(clusterImageUrl);
83 |
84 | return Fluster(
85 | minZoom: minZoom,
86 | maxZoom: maxZoom,
87 | radius: 150,
88 | extent: 2048,
89 | nodeSize: 64,
90 | points: markers,
91 | createCluster: (
92 | BaseCluster cluster,
93 | double lng,
94 | double lat,
95 | ) =>
96 | Markers(
97 | id: cluster.id.toString(),
98 | position: LatLng(lat, lng),
99 | icon: clusterImage,
100 | isCluster: true,
101 | clusterId: cluster.id,
102 | pointsSize: cluster.pointsSize,
103 | childMarkerId: cluster.childMarkerId,
104 | ),
105 | );
106 | }
107 |
108 | /// Gets a list of markers and clusters that reside within the visible bounding box for
109 | /// the given [currentZoom]. For more info check [Fluster.clusters].
110 | static List getClusterMarkers(
111 | Fluster clusterManager,
112 | double currentZoom,
113 | ) {
114 | assert(currentZoom != null);
115 |
116 | if (clusterManager == null) return [];
117 |
118 | return clusterManager
119 | .clusters([-180, -85, 180, 85], currentZoom.toInt())
120 | .map((cluster) => cluster.toMarker())
121 | .toList();
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/lib/utils/map_marker.dart:
--------------------------------------------------------------------------------
1 | import 'package:fluster/fluster.dart';
2 | import 'package:google_maps_flutter/google_maps_flutter.dart';
3 | import 'package:meta/meta.dart';
4 |
5 | /// [Fluster] can only handle markers that conform to the [Clusterable] abstract class.
6 | ///
7 | /// You can customize this class by adding more parameters that might be needed for
8 | /// your use case. For instance, you can pass an onTap callback or add an
9 | /// [InfoWindow] to your marker here, then you can use the [toMarker] method to convert
10 | /// this to a proper [Marker] that the [GoogleMap] can read.
11 | class Markers extends Clusterable {
12 | final String id;
13 | final LatLng position;
14 | final BitmapDescriptor icon;
15 | final InfoWindow infoWindow;
16 |
17 | Markers({
18 | @required this.id,
19 | @required this.position,
20 | @required this.icon,
21 | @required this.infoWindow,
22 | isCluster = false,
23 | clusterId,
24 | pointsSize,
25 | childMarkerId,
26 | }) : super(
27 | markerId: id,
28 | latitude: position.latitude,
29 | longitude: position.longitude,
30 | isCluster: isCluster,
31 | clusterId: clusterId,
32 | pointsSize: pointsSize,
33 | childMarkerId: childMarkerId,
34 | );
35 |
36 | Marker toMarker() => Marker(
37 | markerId: MarkerId(id),
38 | position: LatLng(
39 | position.latitude,
40 | position.longitude,
41 | ),
42 | icon: icon,
43 | infoWindow: infoWindow,
44 | );
45 | }
46 |
--------------------------------------------------------------------------------
/lib/utils/map_styles.dart:
--------------------------------------------------------------------------------
1 | String lightMap =
2 | '[{"stylers":[{"visibility":"simplified"}]},{"featureType":"administrative","stylers":[{"color":"#7393ab"}]},{"featureType":"landscape","stylers":[{"color":"#dae6eb"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#c6e8b3"}]},{"featureType":"poi","elementType":"labels","stylers":[{"color":"#7393ab"},{"visibility":"off"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]},{"featureType":"poi.school","stylers":[{"visibility":"simplified"}]},{"featureType":"road","stylers":[{"color":"#e4f0f7"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#e4f0f7"},{"visibility":"on"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"transit.line","stylers":[{"color":"#cccccc"}]},{"featureType":"water","stylers":[{"color":"#a6cbe3"}]},{"featureType":"water","elementType":"labels","stylers":[{"visibility":"off"}]}]';
3 |
4 | String darkMap =
5 | '[{"stylers":[{"visibility":"simplified"}]},{"featureType":"administrative","stylers":[{"color":"#dfdfdf"}]},{"featureType":"landscape","stylers":[{"color":"#3e4f5c"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#0e8d6f"}]},{"featureType":"poi","elementType":"labels","stylers":[{"color":"#cfd8dc"},{"visibility":"off"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]},{"featureType":"poi.school","stylers":[{"visibility":"simplified"}]},{"featureType":"road","stylers":[{"color":"#4b5f70"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#4b5f70"},{"visibility":"on"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"transit.line","stylers":[{"color":"#999999"}]},{"featureType":"water","stylers":[{"color":"#2a353e"}]},{"featureType":"water","elementType":"labels","stylers":[{"visibility":"off"}]}]';
6 |
--------------------------------------------------------------------------------
/lib/utils/text_styles.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/colors.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class TitleStyles {
5 | static const white = TextStyle(
6 | fontSize: 20.0,
7 | color: MyColors.white,
8 | );
9 | static const black = TextStyle(
10 | fontSize: 20.0,
11 | color: MyColors.black,
12 | );
13 | static const primary = TextStyle(
14 | fontSize: 20.0,
15 | color: MyColors.primary,
16 | );
17 | }
18 |
19 | class BodyStyles {
20 | static const white = TextStyle(
21 | fontSize: 16.0,
22 | color: MyColors.white,
23 | );
24 | static const black = TextStyle(
25 | fontSize: 16.0,
26 | color: MyColors.black,
27 | );
28 | static const primary = TextStyle(
29 | fontSize: 16.0,
30 | color: MyColors.primary,
31 | );
32 | }
33 |
34 | class BodyStylesItalic {
35 | static const white = TextStyle(
36 | fontSize: 16.0,
37 | color: MyColors.white,
38 | fontStyle: FontStyle.italic,
39 | );
40 | static const black = TextStyle(
41 | fontSize: 16.0,
42 | color: MyColors.black,
43 | fontStyle: FontStyle.italic,
44 | );
45 | static const primary = TextStyle(
46 | fontSize: 16.0,
47 | color: MyColors.primary,
48 | fontStyle: FontStyle.italic,
49 | );
50 | }
51 |
52 | class HeadingStyles {
53 | static const white = TextStyle(
54 | fontSize: 24.0,
55 | fontWeight: FontWeight.w700,
56 | color: MyColors.white,
57 | );
58 | static const black = TextStyle(
59 | fontSize: 24.0,
60 | fontWeight: FontWeight.w700,
61 | color: MyColors.black,
62 | );
63 | static const primary = TextStyle(
64 | fontSize: 24.0,
65 | fontWeight: FontWeight.w700,
66 | color: MyColors.primary,
67 | );
68 | }
69 |
70 | class SubHeadingStyles {
71 | static const white = TextStyle(
72 | fontSize: 18.0,
73 | fontWeight: FontWeight.w700,
74 | color: MyColors.white,
75 | );
76 | static const black = TextStyle(
77 | fontSize: 18.0,
78 | fontWeight: FontWeight.w700,
79 | color: MyColors.black,
80 | );
81 | static const primary = TextStyle(
82 | fontSize: 18.0,
83 | fontWeight: FontWeight.w700,
84 | color: MyColors.primary,
85 | );
86 | }
87 |
88 | class LabelStyles {
89 | static const white = TextStyle(
90 | fontSize: 14.0,
91 | color: MyColors.white,
92 | );
93 | static const black = TextStyle(
94 | fontSize: 14.0,
95 | color: MyColors.black,
96 | );
97 | static const primary = TextStyle(
98 | fontSize: 14.0,
99 | color: MyColors.primary,
100 | );
101 | }
102 |
103 | class MessageSenderStyles {
104 | static const white = TextStyle(
105 | fontSize: 12.0,
106 | color: MyColors.white,
107 | );
108 | static const black = TextStyle(
109 | fontSize: 12.0,
110 | color: MyColors.black,
111 | );
112 | static const primary = TextStyle(
113 | fontSize: 12.0,
114 | color: MyColors.primary,
115 | );
116 | }
117 |
118 | class MessageTextStyles {
119 | static const white = TextStyle(
120 | fontSize: 16.0,
121 | color: MyColors.white,
122 | );
123 | static const black = TextStyle(
124 | fontSize: 16.0,
125 | color: MyColors.black,
126 | );
127 | static const primary = TextStyle(
128 | fontSize: 16.0,
129 | color: MyColors.primary,
130 | );
131 | }
132 |
--------------------------------------------------------------------------------
/lib/utils/translations.dart:
--------------------------------------------------------------------------------
1 | String onboardingPageHeading(String language) {
2 | if (language == 'en') {
3 | return 'Find Customers!';
4 | } else if (language == 'hi') {
5 | return 'भाड़ा ढूंढे!';
6 | } else if (language == 'mr') {
7 | return 'भाड़ा शोध!';
8 | } else {
9 | return 'Translation error';
10 | }
11 | }
12 |
13 | String onboardingPageTitle1(String language) {
14 | if (language == 'en') {
15 | return 'How does it work?';
16 | } else if (language == 'hi') {
17 | return 'यह कैसे काम करता है?';
18 | } else if (language == 'mr') {
19 | return 'हे कसे काम करते?';
20 | } else {
21 | return 'Translation error';
22 | }
23 | }
24 |
25 | String onboardingPageTitle1Body1(String language) {
26 | if (language == 'en') {
27 | return 'Find out where Riders are waiting for Rickshaws';
28 | } else if (language == 'hi') {
29 | return 'पास में सवार का पता लगाएँ और उनकी ओर दिशाएँ प्राप्त करें';
30 | } else if (language == 'mr') {
31 | return 'झवळच्या भाडा ना शोध आणि त्यांच्या काढे जायचा रस्ता पण';
32 | } else {
33 | return 'Translation error';
34 | }
35 | }
36 |
37 | String onboardingPageTitle2(String language) {
38 | if (language == 'en') {
39 | return 'How do I get to know?';
40 | } else if (language == 'hi') {
41 | return 'मुझे कैसे सूचित किया जाएगा?';
42 | } else if (language == 'mr') {
43 | return 'मला कसे सूचित केले जाईल?';
44 | } else {
45 | return 'Translation error';
46 | }
47 | }
48 |
49 | String onboardingPageTitle2Body2(String language) {
50 | if (language == 'en') {
51 | return 'When new Riders mark their location, you will get notified.';
52 | } else if (language == 'hi') {
53 | return 'जैसे ही नए सवार चिह्नित किए जाएंगे हम आपको एक नोटिफिकेशन भेज देंगे';
54 | } else if (language == 'mr') {
55 | return 'नवीन रायडर्स चिन्हांकित होताच आम्ही आपल्याला एक सूचना पाठवू';
56 | } else {
57 | return 'Translation error';
58 | }
59 | }
60 |
61 | String onboardingPageTitle3(String language) {
62 | if (language == 'en') {
63 | return 'Is it free?';
64 | } else if (language == 'hi') {
65 | return 'क्या यह मुफ्त है?';
66 | } else if (language == 'mr') {
67 | return 'हे विनामूल्य आहे का?';
68 | } else {
69 | return 'Translation error';
70 | }
71 | }
72 |
73 | String onboardingPageTitle3Body3(String language) {
74 | if (language == 'en') {
75 | return 'Yes, it is completely free!';
76 | } else if (language == 'hi') {
77 | return 'हाँ, यह एप्लिकेशन पूरी तरह से मुक्त है!';
78 | } else if (language == 'mr') {
79 | return 'होय हा, अँप ऑटो चालकों वापरणे पूर्णपणे विनामूल्य आहे!';
80 | } else {
81 | return 'Translation error';
82 | }
83 | }
84 |
85 | String onboardingPageButton(String language) {
86 | if (language == 'en') {
87 | return 'Let\'s Go!';
88 | } else if (language == 'hi') {
89 | return 'शुरू करो';
90 | } else if (language == 'mr') {
91 | return 'सुरु करू!';
92 | } else {
93 | return 'Translation error';
94 | }
95 | }
96 |
97 | String shareButton(String language) {
98 | if (language == 'en') {
99 | return 'Share';
100 | } else if (language == 'hi') {
101 | return 'शेयर';
102 | } else if (language == 'mr') {
103 | return 'सामायिक';
104 | } else {
105 | return 'Translation error';
106 | }
107 | }
108 |
109 | String chat(String language) {
110 | if (language == 'en') {
111 | return 'Chat';
112 | } else if (language == 'hi') {
113 | return 'बातचीत';
114 | } else if (language == 'mr') {
115 | return 'गप्पा';
116 | } else {
117 | return 'Translation error';
118 | }
119 | }
120 |
121 | String loadingMessages(String language) {
122 | if (language == 'en') {
123 | return 'Loading messages...';
124 | } else if (language == 'hi') {
125 | return 'लोड हो रहा है...';
126 | } else if (language == 'mr') {
127 | return 'लोड करीत आहे...';
128 | } else {
129 | return 'Translation error';
130 | }
131 | }
132 |
133 | String messagePlaceholderText(String language) {
134 | if (language == 'en') {
135 | return 'Talk to others';
136 | } else if (language == 'hi') {
137 | return 'दूसरों से बात करें';
138 | } else if (language == 'mr') {
139 | return 'इतरांशी बोला';
140 | } else {
141 | return 'Translation error';
142 | }
143 | }
144 |
145 | String sendMessageText(String language) {
146 | if (language == 'en') {
147 | return 'Send message';
148 | } else if (language == 'hi') {
149 | return 'मेसेज भेजें';
150 | } else if (language == 'mr') {
151 | return 'संदेश पाठवा';
152 | } else {
153 | return 'Translation error';
154 | }
155 | }
156 |
157 | String recenter(String language) {
158 | if (language == 'en') {
159 | return 'Recenter';
160 | } else if (language == 'hi') {
161 | return 'रेसेण्टर';
162 | } else if (language == 'mr') {
163 | return 'रेसेण्टर';
164 | } else {
165 | return 'Translation error';
166 | }
167 | }
168 |
169 | String noConnection(String language) {
170 | if (language == 'en') {
171 | return 'Oops...there\'s no Internet!';
172 | } else if (language == 'hi') {
173 | return 'इंटरनेट नहीं है!';
174 | } else if (language == 'mr') {
175 | return 'इंटरनेट नाही आहे!';
176 | } else {
177 | return 'Translation error';
178 | }
179 | }
180 |
181 | String fetchingLocation(String language) {
182 | if (language == 'en') {
183 | return 'Fetching location...';
184 | } else if (language == 'hi') {
185 | return 'आपका लोकेशन ढूंढ रहे है...';
186 | } else if (language == 'mr') {
187 | return 'आपले लोकेशन शोधत आहे...';
188 | } else {
189 | return 'Translation error';
190 | }
191 | }
192 |
193 | String markerTextDestination(String language, String destination) {
194 | if (language == 'en') {
195 | return 'Going to $destination';
196 | } else if (language == 'hi') {
197 | return '$destination जा रहा हैं';
198 | } else if (language == 'mr') {
199 | return '$destination जाता आहे';
200 | } else {
201 | return 'Translation error';
202 | }
203 | }
204 |
205 | String markerTextLooking(String language) {
206 | if (language == 'en') {
207 | return 'Looking for a Rickshaw';
208 | } else if (language == 'hi') {
209 | return 'ऑटो की तलाश में हैं';
210 | } else if (language == 'mr') {
211 | return 'ऑटो शोधत आहे';
212 | } else {
213 | return 'Translation error';
214 | }
215 | }
216 |
--------------------------------------------------------------------------------
/lib/utils/ui_helpers.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | void doNothing() {
6 | print('Nothing is happening here (yet)');
7 | } //better than doing null-ing, right? ;)
8 |
9 | bool isIOS(BuildContext context) {
10 | if (Theme.of(context).platform == TargetPlatform.iOS) {
11 | return true;
12 | } else {
13 | return false;
14 | }
15 | } // check if android or ios
16 |
17 | bool isThemeCurrentlyDark(BuildContext context) {
18 | if (Theme.of(context).brightness == Brightness.dark) {
19 | return true;
20 | } else {
21 | return false;
22 | }
23 | } //returns current theme status
24 |
25 | Color invertColorsTheme(BuildContext context) {
26 | if (isThemeCurrentlyDark(context)) {
27 | return MyColors.primary;
28 | } else {
29 | return MyColors.accent;
30 | }
31 | } //returns appropriate theme colors for ui elements
32 |
33 | Color invertInvertColorsTheme(BuildContext context) {
34 | if (isThemeCurrentlyDark(context)) {
35 | return MyColors.accent;
36 | } else {
37 | return MyColors.primary;
38 | }
39 | } //keeps the same colors lol
40 |
41 | Color invertColorsMild(BuildContext context) {
42 | if (isThemeCurrentlyDark(context)) {
43 | return MyColors.light;
44 | } else {
45 | return MyColors.dark;
46 | }
47 | } //returns appropriate mild colors for text visibility
48 |
49 | Color invertInvertColorsMild(BuildContext context) {
50 | if (isThemeCurrentlyDark(context)) {
51 | return MyColors.dark;
52 | } else {
53 | return MyColors.light;
54 | }
55 | } //keeps the same colors lol
56 |
57 | Color invertColorsStrong(BuildContext context) {
58 | if (isThemeCurrentlyDark(context)) {
59 | return MyColors.white;
60 | } else {
61 | return MyColors.black;
62 | }
63 | } //returns appropriate strong colors for text visibility
64 |
65 | Color invertInvertColorsStrong(BuildContext context) {
66 | if (isThemeCurrentlyDark(context)) {
67 | return MyColors.black;
68 | } else {
69 | return MyColors.white;
70 | }
71 | } //keeps the same colors lol
72 |
73 | Color shadowColor(BuildContext context) {
74 | if (isThemeCurrentlyDark(context)) {
75 | return ShadowColors.dark;
76 | } else {
77 | return ShadowColors.light;
78 | }
79 | } //returns appropriate colors for raised element shadows
80 |
--------------------------------------------------------------------------------
/lib/widgets/fetching_location.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/text_styles.dart';
2 | import 'package:driver/utils/translations.dart';
3 | import 'package:driver/utils/ui_helpers.dart';
4 | import 'package:flare_flutter/flare_actor.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class FetchingLocation extends StatelessWidget {
8 | final String language;
9 | FetchingLocation({Key key, @required this.language}) : super(key: key);
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Material(
14 | child: Container(
15 | color: invertInvertColorsStrong(context),
16 | child: Row(
17 | mainAxisAlignment: MainAxisAlignment.center,
18 | crossAxisAlignment: CrossAxisAlignment.center,
19 | children: [
20 | Column(
21 | mainAxisAlignment: MainAxisAlignment.start,
22 | crossAxisAlignment: CrossAxisAlignment.center,
23 | children: [
24 | SizedBox(
25 | height: 175.0,
26 | ),
27 | Container(
28 | width: 225.0,
29 | height: 225.0,
30 | child: FlareActor(
31 | 'assets/flare/fetching_location.flr',
32 | animation: 'animation',
33 | ),
34 | ),
35 | Text(
36 | fetchingLocation(language),
37 | style: isThemeCurrentlyDark(context)
38 | ? TitleStyles.white
39 | : TitleStyles.black,
40 | ),
41 | ],
42 | ),
43 | ],
44 | ),
45 | ),
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/lib/widgets/message.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/colors.dart';
2 | import 'package:driver/utils/text_styles.dart';
3 | import 'package:driver/utils/ui_helpers.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:google_maps_flutter/google_maps_flutter.dart';
6 |
7 | class Message extends StatelessWidget {
8 | final bool isMe;
9 | final bool isNear;
10 | final String senderId;
11 | final String senderName;
12 | final String messageText;
13 | final String destination;
14 | final LatLng location;
15 | final DateTime timestamp;
16 |
17 | const Message({
18 | Key key,
19 | this.isMe,
20 | this.isNear,
21 | this.senderId,
22 | this.senderName,
23 | this.messageText,
24 | this.destination,
25 | this.location,
26 | this.timestamp,
27 | }) : super(key: key);
28 |
29 | @override
30 | Widget build(BuildContext context) {
31 | return Visibility(
32 | visible: isNear,
33 | child: Container(
34 | child: Column(
35 | crossAxisAlignment:
36 | isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,
37 | children: [
38 | SizedBox(
39 | height: 10.0,
40 | ),
41 | Material(
42 | color: isMe ? MyColors.primary : invertInvertColorsMild(context),
43 | borderRadius: BorderRadius.circular(8.0),
44 | elevation: 1.0,
45 | child: Container(
46 | padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0),
47 | child: Column(
48 | mainAxisAlignment: MainAxisAlignment.center,
49 | crossAxisAlignment:
50 | isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,
51 | children: [
52 | Text(
53 | isMe ? 'You:' : '$senderName says:',
54 | style: isMe
55 | ? MessageSenderStyles.black
56 | : isThemeCurrentlyDark(context)
57 | ? MessageSenderStyles.white
58 | : MessageSenderStyles.black,
59 | ),
60 | Text(
61 | messageText,
62 | style: isMe
63 | ? MessageTextStyles.black
64 | : isThemeCurrentlyDark(context)
65 | ? MessageTextStyles.white
66 | : MessageTextStyles.black,
67 | ),
68 | ],
69 | ),
70 | ),
71 | ),
72 | SizedBox(
73 | height: 10.0,
74 | ),
75 | ],
76 | ),
77 | ),
78 | );
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/lib/widgets/message_placeholder.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/text_styles.dart';
2 | import 'package:driver/utils/ui_helpers.dart';
3 | import 'package:flare_flutter/flare_actor.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | Widget messagePlaceholder(BuildContext context, String text) {
7 | String flareFile = isThemeCurrentlyDark(context)
8 | ? 'messages-dark.flr'
9 | : 'messages-light.flr';
10 | return Row(
11 | mainAxisAlignment: MainAxisAlignment.center,
12 | children: [
13 | Column(
14 | mainAxisAlignment: MainAxisAlignment.start,
15 | children: [
16 | SizedBox(
17 | height: 30.0,
18 | ),
19 | Container(
20 | width: 250.0,
21 | height: 250.0,
22 | child: FlareActor(
23 | 'assets/flare/$flareFile',
24 | animation: 'animation',
25 | ),
26 | ),
27 | Text(
28 | text,
29 | style: isThemeCurrentlyDark(context)
30 | ? BodyStyles.white
31 | : BodyStyles.black,
32 | ),
33 | ],
34 | ),
35 | ],
36 | );
37 | }
38 |
--------------------------------------------------------------------------------
/lib/widgets/no_connection.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/colors.dart';
2 | import 'package:driver/utils/text_styles.dart';
3 | import 'package:driver/utils/translations.dart';
4 | import 'package:flare_flutter/flare_actor.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class NoConnection extends StatelessWidget {
8 | final String language;
9 | NoConnection({Key key, @required this.language}) : super(key: key);
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Material(
14 | child: Container(
15 | color: MyColors.light,
16 | child: Row(
17 | mainAxisAlignment: MainAxisAlignment.center,
18 | crossAxisAlignment: CrossAxisAlignment.center,
19 | children: [
20 | Column(
21 | mainAxisAlignment: MainAxisAlignment.center,
22 | crossAxisAlignment: CrossAxisAlignment.center,
23 | children: [
24 | Container(
25 | width: 200.0,
26 | height: 200.0,
27 | child: FlareActor(
28 | 'assets/flare/no_connection.flr',
29 | animation: 'animation',
30 | ),
31 | ),
32 | SizedBox(
33 | height: 30.0,
34 | ),
35 | Text(
36 | noConnection(language),
37 | style: TitleStyles.black,
38 | ),
39 | ],
40 | ),
41 | ],
42 | ),
43 | ),
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/widgets/sexy_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:driver/utils/ui_helpers.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class SexyTile extends StatelessWidget {
6 | const SexyTile({
7 | this.child,
8 | this.color,
9 | this.splashColor,
10 | this.onTap,
11 | });
12 | final Widget child;
13 | final Color color;
14 | final Color splashColor;
15 | final Function() onTap;
16 |
17 | Widget build(BuildContext context) {
18 | return Container(
19 | margin: EdgeInsets.all(15.0),
20 | child: Material(
21 | color: color,
22 | elevation: 10.0,
23 | borderRadius: BorderRadius.circular(15.0),
24 | shadowColor: shadowColor(context),
25 | child: InkWell(
26 | child: child,
27 | splashColor: splashColor,
28 | borderRadius: BorderRadius.circular(15.0),
29 | onTap: onTap == null ? doNothing : () => onTap(),
30 | ),
31 | ),
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | archive:
5 | dependency: transitive
6 | description:
7 | name: archive
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.0.11"
11 | args:
12 | dependency: transitive
13 | description:
14 | name: args
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "1.5.2"
18 | async:
19 | dependency: transitive
20 | description:
21 | name: async
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "2.4.0"
25 | boolean_selector:
26 | dependency: transitive
27 | description:
28 | name: boolean_selector
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.0.5"
32 | charcode:
33 | dependency: transitive
34 | description:
35 | name: charcode
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.1.2"
39 | cloud_firestore:
40 | dependency: "direct main"
41 | description:
42 | name: cloud_firestore
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "0.13.4+2"
46 | cloud_firestore_platform_interface:
47 | dependency: transitive
48 | description:
49 | name: cloud_firestore_platform_interface
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "1.1.0"
53 | cloud_firestore_web:
54 | dependency: transitive
55 | description:
56 | name: cloud_firestore_web
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "0.1.1"
60 | collection:
61 | dependency: transitive
62 | description:
63 | name: collection
64 | url: "https://pub.dartlang.org"
65 | source: hosted
66 | version: "1.14.11"
67 | connectivity:
68 | dependency: transitive
69 | description:
70 | name: connectivity
71 | url: "https://pub.dartlang.org"
72 | source: hosted
73 | version: "0.4.5+3"
74 | convert:
75 | dependency: transitive
76 | description:
77 | name: convert
78 | url: "https://pub.dartlang.org"
79 | source: hosted
80 | version: "2.1.1"
81 | crypto:
82 | dependency: transitive
83 | description:
84 | name: crypto
85 | url: "https://pub.dartlang.org"
86 | source: hosted
87 | version: "2.1.3"
88 | cupertino_icons:
89 | dependency: "direct main"
90 | description:
91 | name: cupertino_icons
92 | url: "https://pub.dartlang.org"
93 | source: hosted
94 | version: "0.1.3"
95 | equatable:
96 | dependency: transitive
97 | description:
98 | name: equatable
99 | url: "https://pub.dartlang.org"
100 | source: hosted
101 | version: "1.1.1"
102 | firebase:
103 | dependency: transitive
104 | description:
105 | name: firebase
106 | url: "https://pub.dartlang.org"
107 | source: hosted
108 | version: "7.2.1"
109 | firebase_analytics:
110 | dependency: "direct main"
111 | description:
112 | name: firebase_analytics
113 | url: "https://pub.dartlang.org"
114 | source: hosted
115 | version: "5.0.11"
116 | firebase_core:
117 | dependency: transitive
118 | description:
119 | name: firebase_core
120 | url: "https://pub.dartlang.org"
121 | source: hosted
122 | version: "0.4.4"
123 | firebase_core_platform_interface:
124 | dependency: transitive
125 | description:
126 | name: firebase_core_platform_interface
127 | url: "https://pub.dartlang.org"
128 | source: hosted
129 | version: "1.0.0"
130 | firebase_core_web:
131 | dependency: transitive
132 | description:
133 | name: firebase_core_web
134 | url: "https://pub.dartlang.org"
135 | source: hosted
136 | version: "0.1.1+2"
137 | flare_dart:
138 | dependency: transitive
139 | description:
140 | name: flare_dart
141 | url: "https://pub.dartlang.org"
142 | source: hosted
143 | version: "2.3.3"
144 | flare_flutter:
145 | dependency: "direct main"
146 | description:
147 | name: flare_flutter
148 | url: "https://pub.dartlang.org"
149 | source: hosted
150 | version: "2.0.1"
151 | fluster:
152 | dependency: "direct main"
153 | description:
154 | name: fluster
155 | url: "https://pub.dartlang.org"
156 | source: hosted
157 | version: "1.1.2"
158 | flutter:
159 | dependency: "direct main"
160 | description: flutter
161 | source: sdk
162 | version: "0.0.0"
163 | flutter_cache_manager:
164 | dependency: "direct main"
165 | description:
166 | name: flutter_cache_manager
167 | url: "https://pub.dartlang.org"
168 | source: hosted
169 | version: "1.1.3"
170 | flutter_launcher_icons:
171 | dependency: "direct dev"
172 | description:
173 | name: flutter_launcher_icons
174 | url: "https://pub.dartlang.org"
175 | source: hosted
176 | version: "0.7.4"
177 | flutter_local_notifications:
178 | dependency: "direct main"
179 | description:
180 | name: flutter_local_notifications
181 | url: "https://pub.dartlang.org"
182 | source: hosted
183 | version: "1.2.2"
184 | flutter_local_notifications_platform_interface:
185 | dependency: transitive
186 | description:
187 | name: flutter_local_notifications_platform_interface
188 | url: "https://pub.dartlang.org"
189 | source: hosted
190 | version: "1.0.1"
191 | flutter_offline:
192 | dependency: "direct main"
193 | description:
194 | name: flutter_offline
195 | url: "https://pub.dartlang.org"
196 | source: hosted
197 | version: "0.3.0"
198 | flutter_plugin_android_lifecycle:
199 | dependency: transitive
200 | description:
201 | name: flutter_plugin_android_lifecycle
202 | url: "https://pub.dartlang.org"
203 | source: hosted
204 | version: "1.0.6"
205 | flutter_test:
206 | dependency: "direct dev"
207 | description: flutter
208 | source: sdk
209 | version: "0.0.0"
210 | flutter_web_plugins:
211 | dependency: transitive
212 | description: flutter
213 | source: sdk
214 | version: "0.0.0"
215 | geoflutterfire:
216 | dependency: "direct main"
217 | description:
218 | name: geoflutterfire
219 | url: "https://pub.dartlang.org"
220 | source: hosted
221 | version: "2.1.0"
222 | geolocator:
223 | dependency: "direct main"
224 | description:
225 | name: geolocator
226 | url: "https://pub.dartlang.org"
227 | source: hosted
228 | version: "5.3.0"
229 | google_api_availability:
230 | dependency: transitive
231 | description:
232 | name: google_api_availability
233 | url: "https://pub.dartlang.org"
234 | source: hosted
235 | version: "2.0.3"
236 | google_maps_flutter:
237 | dependency: "direct main"
238 | description:
239 | name: google_maps_flutter
240 | url: "https://pub.dartlang.org"
241 | source: hosted
242 | version: "0.5.24+1"
243 | http:
244 | dependency: transitive
245 | description:
246 | name: http
247 | url: "https://pub.dartlang.org"
248 | source: hosted
249 | version: "0.12.0+2"
250 | http_parser:
251 | dependency: transitive
252 | description:
253 | name: http_parser
254 | url: "https://pub.dartlang.org"
255 | source: hosted
256 | version: "3.1.3"
257 | image:
258 | dependency: transitive
259 | description:
260 | name: image
261 | url: "https://pub.dartlang.org"
262 | source: hosted
263 | version: "2.1.4"
264 | js:
265 | dependency: transitive
266 | description:
267 | name: js
268 | url: "https://pub.dartlang.org"
269 | source: hosted
270 | version: "0.6.1+1"
271 | location_permissions:
272 | dependency: transitive
273 | description:
274 | name: location_permissions
275 | url: "https://pub.dartlang.org"
276 | source: hosted
277 | version: "2.0.5"
278 | matcher:
279 | dependency: transitive
280 | description:
281 | name: matcher
282 | url: "https://pub.dartlang.org"
283 | source: hosted
284 | version: "0.12.6"
285 | meta:
286 | dependency: transitive
287 | description:
288 | name: meta
289 | url: "https://pub.dartlang.org"
290 | source: hosted
291 | version: "1.1.8"
292 | nested:
293 | dependency: transitive
294 | description:
295 | name: nested
296 | url: "https://pub.dartlang.org"
297 | source: hosted
298 | version: "0.0.4"
299 | path:
300 | dependency: transitive
301 | description:
302 | name: path
303 | url: "https://pub.dartlang.org"
304 | source: hosted
305 | version: "1.6.4"
306 | path_provider:
307 | dependency: transitive
308 | description:
309 | name: path_provider
310 | url: "https://pub.dartlang.org"
311 | source: hosted
312 | version: "1.4.5"
313 | pedantic:
314 | dependency: transitive
315 | description:
316 | name: pedantic
317 | url: "https://pub.dartlang.org"
318 | source: hosted
319 | version: "1.8.0+1"
320 | petitparser:
321 | dependency: transitive
322 | description:
323 | name: petitparser
324 | url: "https://pub.dartlang.org"
325 | source: hosted
326 | version: "2.4.0"
327 | platform:
328 | dependency: transitive
329 | description:
330 | name: platform
331 | url: "https://pub.dartlang.org"
332 | source: hosted
333 | version: "2.2.1"
334 | plugin_platform_interface:
335 | dependency: transitive
336 | description:
337 | name: plugin_platform_interface
338 | url: "https://pub.dartlang.org"
339 | source: hosted
340 | version: "1.0.1"
341 | provider:
342 | dependency: "direct main"
343 | description:
344 | name: provider
345 | url: "https://pub.dartlang.org"
346 | source: hosted
347 | version: "4.0.4"
348 | quiver:
349 | dependency: transitive
350 | description:
351 | name: quiver
352 | url: "https://pub.dartlang.org"
353 | source: hosted
354 | version: "2.0.5"
355 | quiver_hashcode:
356 | dependency: transitive
357 | description:
358 | name: quiver_hashcode
359 | url: "https://pub.dartlang.org"
360 | source: hosted
361 | version: "2.0.0"
362 | rxdart:
363 | dependency: transitive
364 | description:
365 | name: rxdart
366 | url: "https://pub.dartlang.org"
367 | source: hosted
368 | version: "0.23.1"
369 | share:
370 | dependency: "direct main"
371 | description:
372 | name: share
373 | url: "https://pub.dartlang.org"
374 | source: hosted
375 | version: "0.6.3+6"
376 | shared_preferences:
377 | dependency: "direct main"
378 | description:
379 | name: shared_preferences
380 | url: "https://pub.dartlang.org"
381 | source: hosted
382 | version: "0.5.6+3"
383 | shared_preferences_macos:
384 | dependency: transitive
385 | description:
386 | name: shared_preferences_macos
387 | url: "https://pub.dartlang.org"
388 | source: hosted
389 | version: "0.0.1+6"
390 | shared_preferences_platform_interface:
391 | dependency: transitive
392 | description:
393 | name: shared_preferences_platform_interface
394 | url: "https://pub.dartlang.org"
395 | source: hosted
396 | version: "1.0.3"
397 | shared_preferences_web:
398 | dependency: transitive
399 | description:
400 | name: shared_preferences_web
401 | url: "https://pub.dartlang.org"
402 | source: hosted
403 | version: "0.1.2+4"
404 | sky_engine:
405 | dependency: transitive
406 | description: flutter
407 | source: sdk
408 | version: "0.0.99"
409 | source_span:
410 | dependency: transitive
411 | description:
412 | name: source_span
413 | url: "https://pub.dartlang.org"
414 | source: hosted
415 | version: "1.5.5"
416 | sqflite:
417 | dependency: transitive
418 | description:
419 | name: sqflite
420 | url: "https://pub.dartlang.org"
421 | source: hosted
422 | version: "1.1.7+3"
423 | stack_trace:
424 | dependency: transitive
425 | description:
426 | name: stack_trace
427 | url: "https://pub.dartlang.org"
428 | source: hosted
429 | version: "1.9.3"
430 | stream_channel:
431 | dependency: transitive
432 | description:
433 | name: stream_channel
434 | url: "https://pub.dartlang.org"
435 | source: hosted
436 | version: "2.0.0"
437 | string_scanner:
438 | dependency: transitive
439 | description:
440 | name: string_scanner
441 | url: "https://pub.dartlang.org"
442 | source: hosted
443 | version: "1.0.5"
444 | synchronized:
445 | dependency: transitive
446 | description:
447 | name: synchronized
448 | url: "https://pub.dartlang.org"
449 | source: hosted
450 | version: "2.1.0+2"
451 | term_glyph:
452 | dependency: transitive
453 | description:
454 | name: term_glyph
455 | url: "https://pub.dartlang.org"
456 | source: hosted
457 | version: "1.1.0"
458 | test_api:
459 | dependency: transitive
460 | description:
461 | name: test_api
462 | url: "https://pub.dartlang.org"
463 | source: hosted
464 | version: "0.2.15"
465 | typed_data:
466 | dependency: transitive
467 | description:
468 | name: typed_data
469 | url: "https://pub.dartlang.org"
470 | source: hosted
471 | version: "1.1.6"
472 | uuid:
473 | dependency: "direct main"
474 | description:
475 | name: uuid
476 | url: "https://pub.dartlang.org"
477 | source: hosted
478 | version: "2.0.4"
479 | vector_math:
480 | dependency: transitive
481 | description:
482 | name: vector_math
483 | url: "https://pub.dartlang.org"
484 | source: hosted
485 | version: "2.0.8"
486 | xml:
487 | dependency: transitive
488 | description:
489 | name: xml
490 | url: "https://pub.dartlang.org"
491 | source: hosted
492 | version: "3.5.0"
493 | yaml:
494 | dependency: transitive
495 | description:
496 | name: yaml
497 | url: "https://pub.dartlang.org"
498 | source: hosted
499 | version: "2.2.0"
500 | sdks:
501 | dart: ">=2.7.0-dev <3.0.0"
502 | flutter: ">=1.12.13+hotfix.5 <2.0.0"
503 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: driver
2 | description: The Fliver Driver app
3 | version: 2.0.0+7
4 |
5 | environment:
6 | sdk: ">=2.2.0 <3.0.0"
7 |
8 | dependencies:
9 | flutter:
10 | sdk: flutter
11 |
12 | cloud_firestore: ^0.13.4+2
13 | cupertino_icons: ^0.1.3
14 | firebase_analytics: ^5.0.11
15 | flare_flutter: ^2.0.1
16 | fluster: ^1.1.2
17 | flutter_cache_manager: ^1.1.3
18 | flutter_local_notifications: ^1.2.2
19 | flutter_offline: ^0.3.0
20 | geoflutterfire: ^2.1.0
21 | geolocator: ^5.3.0
22 | google_maps_flutter: ^0.5.24+1
23 | provider: ^4.0.4
24 | share: ^0.6.3+6
25 | shared_preferences: ^0.5.6+3
26 | uuid: ^2.0.4
27 |
28 | dev_dependencies:
29 | flutter_test:
30 | sdk: flutter
31 | flutter_launcher_icons: ^0.7.3
32 |
33 | flutter_icons:
34 | android: 'launcher_icon'
35 | image_path_android: 'assets/icon/icon-legacy.png'
36 | adaptive_icon_foreground: 'assets/icon/icon-adaptive.png'
37 | adaptive_icon_background: '#eceff1'
38 |
39 | ios: true
40 | image_path_ios: 'assets/icon/icon-ios.png'
41 |
42 | flutter:
43 | uses-material-design: true
44 |
45 | assets:
46 | - assets/credits/
47 | - assets/flare/
48 | - assets/logo/
49 | - assets/other/
50 |
51 | fonts:
52 | - family: AvenirNextRounded
53 | fonts:
54 | - asset: assets/fonts/AvenirNextRounded/AvenirNextRounded-Medium.ttf
55 |
--------------------------------------------------------------------------------