├── .gitignore
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── mrnpro
│ │ │ │ └── go_find_taxi
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── animations
│ └── .gitkeep
├── colors
│ └── .gitkeep
├── domain
│ └── .well-known
│ │ ├── apple-app-site-association
│ │ └── assetlinks.json
├── icons
│ └── .gitkeep
├── images
│ ├── .gitkeep
│ └── location_avatar.png
├── jsons
│ ├── map_style.json
│ └── search.json
└── svgs
│ ├── .gitkeep
│ ├── bus_icon.svg
│ ├── bus_service.svg
│ ├── filter.svg
│ ├── home.svg
│ ├── location.svg
│ ├── map.svg
│ ├── navigate.svg
│ ├── profile.svg
│ ├── route_progress.svg
│ ├── route_progress_vertical.svg
│ └── taxi_service.svg
├── firebase.json
├── ios
├── .gitignore
├── Config.xcconfig
├── Flutter
│ └── AppFrameworkInfo.plist
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Config.xcconfig.template
│ ├── Info.plist
│ ├── Runner-Bridging-Header.h
│ └── Runner.entitlements
└── RunnerTests
│ └── RunnerTests.swift
├── lib
├── _shared
│ ├── data
│ │ ├── models
│ │ │ └── .gitkeep
│ │ └── repo
│ │ │ └── .gitkeep
│ └── presentation
│ │ ├── dialog
│ │ └── .gitkeep
│ │ ├── provider
│ │ └── base_provider.dart
│ │ ├── screens
│ │ ├── .gitkeep
│ │ └── error_screen.dart
│ │ └── widgets
│ │ ├── .gitkeep
│ │ ├── app_container.dart
│ │ ├── back_btn.dart
│ │ ├── border_less_text_field.dart
│ │ └── navigation.dart
├── app.dart
├── core
│ ├── analytics
│ │ └── observers
│ │ │ ├── observers.dart
│ │ │ └── riverpod_loger.dart
│ ├── barrels
│ │ └── all_screens_barrel.dart
│ ├── config
│ │ ├── api
│ │ │ └── api_endpoints.dart
│ │ ├── router
│ │ │ ├── redirection.dart
│ │ │ ├── route_name.dart
│ │ │ └── router.dart
│ │ └── theme
│ │ │ ├── color_pallete.dart
│ │ │ └── theme_config.dart
│ ├── constants.dart
│ ├── constants
│ │ └── assets.dart
│ ├── extentions
│ │ ├── app_shimmer.dart
│ │ └── date_extention.dart
│ ├── handlers
│ │ ├── dio_error_handler.dart
│ │ ├── error_handler.dart
│ │ ├── failure
│ │ │ └── failure.dart
│ │ ├── result.dart
│ │ └── success
│ │ │ └── success.dart
│ ├── interceptors
│ │ └── dio_interceptor.dart
│ ├── services
│ │ ├── LocationService
│ │ │ ├── from_server_impl.dart
│ │ │ ├── gebeta_maps_impl.dart
│ │ │ ├── google_map_impl.dart
│ │ │ ├── location_service.dart
│ │ │ └── models
│ │ │ │ ├── direction.dart
│ │ │ │ ├── geo_coding_response.dart
│ │ │ │ ├── geo_coding_response.freezed.dart
│ │ │ │ ├── geo_coding_response.g.dart
│ │ │ │ ├── reverse_geocoding_response.dart
│ │ │ │ ├── reverse_geocoding_response.freezed.dart
│ │ │ │ └── reverse_geocoding_response.g.dart
│ │ ├── NetworkConnectionChecker
│ │ │ └── data_connection_checker.dart
│ │ ├── OnlineService
│ │ │ └── httpService
│ │ │ │ ├── http_service.dart
│ │ │ │ ├── http_service.g.dart
│ │ │ │ └── http_service_impl.dart
│ │ ├── index.dart
│ │ ├── launch_service.dart
│ │ └── localService
│ │ │ ├── local_service.dart
│ │ │ ├── local_service_impl.dart
│ │ │ ├── local_service_provider.dart
│ │ │ └── local_service_provider.g.dart
│ └── utils
│ │ ├── index.dart
│ │ └── src
│ │ ├── calculate_distance.dart
│ │ ├── color_utils.dart
│ │ ├── date_util.dart
│ │ ├── debounce.dart
│ │ ├── leg_utils.dart
│ │ ├── location_util.dart
│ │ ├── print_util.dart
│ │ ├── safe_ui_api_call.dart
│ │ ├── simulate.dart
│ │ └── text_field_validator.dart
├── firebase_options.dart
├── hooks
│ └── debounce.dart
├── main.dart
└── modules
│ ├── home
│ └── presentation
│ │ └── home_page_page.dart
│ └── transit
│ ├── core
│ ├── map_utils.dart
│ ├── price_calculator.dart
│ └── search_focus_enum.dart
│ ├── data
│ ├── datasource
│ │ ├── redat_data_source.dart
│ │ ├── transit_data_source.dart
│ │ └── weyalaw_data_source.dart
│ ├── models
│ │ ├── redat-model
│ │ │ ├── coordinates_redatmodel.dart
│ │ │ ├── place_redatmodel.dart
│ │ │ ├── transport_option_redatmodel.dart
│ │ │ └── transport_step_redatmodel.dart
│ │ ├── route.dart
│ │ ├── route_model.dart
│ │ ├── transport_place_model.dart
│ │ ├── transport_route.dart
│ │ └── weyalaw-model
│ │ │ ├── coordinates_weyalawmodel.dart
│ │ │ ├── place_weyalawmodel.dart
│ │ │ ├── transport_option_weyalawmodel.dart
│ │ │ └── transport_step_weyalawmodel.dart
│ └── repositories
│ │ └── remote
│ │ ├── i_route_remote.dart
│ │ ├── i_route_remote.g.dart
│ │ └── route_remote_impl.dart
│ ├── entities
│ ├── coordinates_entity.dart
│ ├── place_entity.dart
│ ├── transport_option_entity.dart
│ └── transport_step_entity.dart
│ └── presentation
│ ├── dialogs
│ ├── .gitkeep
│ └── no_route_found_alert.dart
│ ├── pages
│ ├── error_screen.dart
│ ├── main_screen.dart
│ ├── pages.dart
│ ├── recent-transits
│ │ └── recent_transit_screen.dart
│ ├── ride_details_screen.dart
│ ├── searchPage
│ │ ├── components
│ │ │ ├── back_button.dart
│ │ │ ├── components.dart
│ │ │ ├── location_picker.dart
│ │ │ └── set_new_destination.dart
│ │ └── search_page.dart
│ ├── search_screen.dart
│ ├── see_all_transport_route.dart
│ ├── share_location_wrapper.dart
│ ├── start-navigate
│ │ └── start_navigation_screen.dart
│ └── transitOverview
│ │ ├── components
│ │ ├── components.dart
│ │ └── selected_route_detailed_information.dart
│ │ └── transit_overview_page.dart
│ ├── providers
│ ├── .gitkeep
│ ├── current-location-name
│ │ ├── get_current_location_name.dart
│ │ └── get_current_location_name.g.dart
│ ├── get-recent-transits
│ │ ├── recent_transits_provider.dart
│ │ └── recent_transits_provider.g.dart
│ ├── getTransportRouteFromTwoPlace
│ │ ├── get_transport_route_from_two_place_notifier.dart
│ │ ├── get_transport_route_from_two_place_notifier.g.dart
│ │ └── state
│ │ │ ├── get_transport_route_from_two_place_state.dart
│ │ │ └── get_transport_route_from_two_place_state.freezed.dart
│ ├── searchRoute
│ │ ├── search_route_notifier.dart
│ │ ├── search_route_notifier.g.dart
│ │ └── state
│ │ │ ├── search_route_state.dart
│ │ │ └── search_route_state.freezed.dart
│ └── transportRoute
│ │ ├── state
│ │ ├── transport_route_state.dart
│ │ └── transport_route_state.freezed.dart
│ │ ├── transport_route_notifier.dart
│ │ └── transport_route_notifier.g.dart
│ └── widgets
│ ├── background_map.dart
│ ├── route_display_widget.dart
│ ├── transport_routes_list.dart
│ └── widgets.dart
├── linux
├── .gitignore
├── CMakeLists.txt
├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
├── main.cc
├── my_application.cc
└── my_application.h
├── mason-lock.json
├── mason.yaml
├── pubspec.lock
├── pubspec.yaml
├── web
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── index.html
└── manifest.json
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
├── CMakeLists.txt
├── generated_plugin_registrant.cc
├── generated_plugin_registrant.h
└── generated_plugins.cmake
└── runner
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── resources
└── app_icon.ico
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter/Dart
2 | .dart_tool/
3 | .flutter-plugins
4 | .flutter-plugins-dependencies
5 | .packages
6 | .pub-cache/
7 | .pub/
8 | build/
9 | coverage/
10 | *.class
11 | *.log
12 | *.pyc
13 | *.swp
14 | .DS_Store
15 | .atom/
16 | .buildlog/
17 | .history
18 | .svn/
19 |
20 | # Android
21 | **/android/**/gradle-wrapper.jar
22 | **/android/.gradle
23 | **/android/captures/
24 | **/android/gradlew
25 | **/android/gradlew.bat
26 | **/android/local.properties
27 | **/android/**/GeneratedPluginRegistrant.java
28 | **/android/key.properties
29 | *.jks
30 |
31 | # iOS
32 | **/ios/**/*.mode1v3
33 | **/ios/**/*.mode2v3
34 | **/ios/**/*.moved-aside
35 | **/ios/**/*.pbxuser
36 | **/ios/**/*.perspectivev3
37 | **/ios/**/*sync/
38 | **/ios/**/.sconsign.dblite
39 | **/ios/**/.tags*
40 | **/ios/**/.vagrant/
41 | **/ios/**/DerivedData/
42 | **/ios/**/Icon?
43 | **/ios/**/Pods/
44 | **/ios/**/.symlinks/
45 | **/ios/**/profile
46 | **/ios/**/xcuserdata
47 | **/ios/.generated/
48 | **/ios/Flutter/.last_build_id
49 | **/ios/Flutter/ephemeral/
50 | **/ios/Flutter/Flutter.podspec
51 |
52 | # Web
53 | **/web/favicon.png
54 |
55 | # IDE
56 | .idea/
57 | .vscode/
58 | *.iml
59 | *.iws
60 | .project
61 | .classpath
62 | .settings/
63 | .vscode/
64 |
65 | # Project specific
66 | .env
67 | .env.local
68 | *.env.json
69 | google-services.json
70 | GoogleService-Info.plist
71 |
72 | # Temporary files
73 | *.log.*
74 | *.bak
75 | *.tmp
76 | *~
77 | .*.swp
78 |
79 | # Secrets and API Keys
80 | **/android/app/src/main/res/values/secrets.xml
81 | **/android/app/src/main/res/values/strings.xml
82 | **/android/local.properties
83 | **/android/app/src/main/res/values/api_keys.xml
84 | **/android/key.properties
85 | .env
86 | .env.local
87 | secrets.properties
88 | local.properties
89 |
90 | # iOS Secrets
91 | **/ios/Runner/Config.xcconfig
92 | **/ios/Runner/GoogleService-Info.plist
93 | **/ios/Flutter/Debug.xcconfig
94 | **/ios/Flutter/Release.xcconfig
95 | **/ios/Configuration.storekit
96 | **/ios/**/xcuserdata/
97 | **/ios/.env.*
98 | **/ios/config/
99 | **/ios/Runner/GeneratedPluginRegistrant.*
100 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | analyzer:
11 | plugins:
12 | - custom_lint
13 | errors:
14 | invalid_annotation_target: ignore
15 | void_checks: ignore
16 | include: package:flutter_lints/flutter.yaml
17 |
18 | linter:
19 | # The lint rules applied to this project can be customized in the
20 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
21 | # included above or to enable additional rules. A list of all available lints
22 | # and their documentation is published at https://dart.dev/lints.
23 | #
24 | # Instead of disabling a lint rule for the entire project in the
25 | # section below, it can also be suppressed for a single line of code
26 | # or a specific dart file by using the `// ignore: name_of_lint` and
27 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
28 | # producing the lint.
29 | rules:
30 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
31 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
32 | # Additional information about this file can be found at
33 | # https://dart.dev/guides/language/analysis-options
34 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/to/reference-keystore
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | // START: FlutterFire Configuration
4 | id 'com.google.gms.google-services'
5 | // END: FlutterFire Configuration
6 | id "kotlin-android"
7 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
8 | id "dev.flutter.flutter-gradle-plugin"
9 | }
10 |
11 | android {
12 | namespace "com.mrnpro.weyalaw"
13 | compileSdk 34
14 | ndkVersion = flutter.ndkVersion
15 |
16 | compileOptions {
17 | sourceCompatibility = JavaVersion.VERSION_1_8
18 | targetCompatibility = JavaVersion.VERSION_1_8
19 | }
20 |
21 | kotlinOptions {
22 | jvmTarget = JavaVersion.VERSION_1_8
23 | }
24 |
25 | defaultConfig {
26 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
27 | applicationId "com.mrnpro.weyalaw"
28 | // You can update the following values to match your application needs.
29 | // For more information, see: https://flutter.dev/to/review-gradle-config.
30 | minSdk 23
31 | targetSdk flutter.targetSdkVersion
32 | versionCode flutter.versionCode
33 | versionName flutter.versionName
34 | }
35 |
36 | signingConfigs {
37 | debug {
38 | storeFile file("debug.keystore")
39 | storePassword "android"
40 | keyAlias "androiddebugkey"
41 | keyPassword "android"
42 | }
43 | release {
44 | storeFile file("debug.keystore")
45 | storePassword "android"
46 | keyAlias "androiddebugkey"
47 | keyPassword "android"
48 | }
49 |
50 | }
51 | buildTypes {
52 | release {
53 | // TODO: Add your own signing config for the release build.
54 | // Signing with the debug keys for now, so `flutter run --release` works.
55 | signingConfig signingConfigs.release
56 | }
57 | debug {
58 | // TODO: Add your own signing config for the release build.
59 | // Signing with the debug keys for now, so `flutter run --release` works.
60 | signingConfig signingConfigs.debug
61 | }
62 | }
63 | }
64 |
65 | flutter {
66 | source "../.."
67 | }
68 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/mrnpro/go_find_taxi/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.mrnpro.weyalaw
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:8.1.0'
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | google()
16 | mavenCentral()
17 | }
18 | }
19 |
20 | rootProject.buildDir = "../build"
21 | subprojects {
22 | project.buildDir = "${rootProject.buildDir}/${project.name}"
23 | }
24 | subprojects {
25 | project.evaluationDependsOn(":app")
26 | }
27 |
28 | tasks.register("clean", Delete) {
29 | delete rootProject.buildDir
30 | }
31 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "7.3.0" apply false
22 | // START: FlutterFire Configuration
23 | id "com.google.gms.google-services" version "4.3.15" apply false
24 | // END: FlutterFire Configuration
25 | id "org.jetbrains.kotlin.android" version "1.9.0" apply false
26 | }
27 |
28 | include ":app"
29 |
--------------------------------------------------------------------------------
/assets/animations/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/animations/.gitkeep
--------------------------------------------------------------------------------
/assets/colors/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/colors/.gitkeep
--------------------------------------------------------------------------------
/assets/domain/.well-known/apple-app-site-association:
--------------------------------------------------------------------------------
1 | {
2 | "applinks": {
3 | "apps": [],
4 | "details": [
5 | {
6 | "appID": "TEAM_ID.com.mrnpro.goFindTaxi",
7 | "components": [{
8 | "/": "/share-my-location",
9 | "comment": "Matches any URL whose path starts with /share-my-location"
10 | }],
11 | "paths": [ "*" ]
12 | }
13 | ]
14 | },
15 | "webcredentials": {
16 | "apps": ["TEAM_ID.com.mrnpro.goFindTaxi"]
17 | }
18 | }
--------------------------------------------------------------------------------
/assets/domain/.well-known/assetlinks.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "relation": ["delegate_permission/common.handle_all_urls"],
4 | "target": {
5 | "namespace": "android_app",
6 | "package_name": "com.mrnpro.goFindTaxi",
7 | "sha256_cert_fingerprints": [
8 | "FC:9D:9A:AC:3F:FC:B1:47:B1:C7:E8:01:80:AB:3B:C2:FB:28:AE:91:4A:65:D6:6B:68:A6:74:A0:3F:48:A4:4F"
9 | ]
10 | }
11 | }
12 | ]
--------------------------------------------------------------------------------
/assets/icons/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/icons/.gitkeep
--------------------------------------------------------------------------------
/assets/images/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/images/.gitkeep
--------------------------------------------------------------------------------
/assets/images/location_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/images/location_avatar.png
--------------------------------------------------------------------------------
/assets/jsons/map_style.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/jsons/map_style.json
--------------------------------------------------------------------------------
/assets/svgs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/assets/svgs/.gitkeep
--------------------------------------------------------------------------------
/assets/svgs/bus_icon.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/assets/svgs/bus_service.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/svgs/filter.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/svgs/home.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/svgs/location.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/svgs/map.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/svgs/navigate.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/svgs/profile.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/svgs/route_progress.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/svgs/route_progress_vertical.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/assets/svgs/taxi_service.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {"flutter":{"platforms":{"android":{"default":{"projectId":"bus-tracking-9d873","appId":"1:341778370735:android:4ba300a5525281ea87445a","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"bus-tracking-9d873","appId":"1:341778370735:ios:7cf28b3ac66e49bb87445a","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"bus-tracking-9d873","configurations":{"android":"1:341778370735:android:4ba300a5525281ea87445a","ios":"1:341778370735:ios:7cf28b3ac66e49bb87445a"}}}}}}
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter/Dart specific
2 | **/dgph
3 | .dart_tool/
4 | .flutter-plugins
5 | .flutter-plugins-dependencies
6 | .packages
7 | .pub-cache/
8 | .pub/
9 | build/
10 | flutter_*.png
11 | linked_*.ds
12 | unlinked.ds
13 | unlinked_spec.ds
14 |
15 | # iOS specific
16 | *.mode1v3
17 | *.mode2v3
18 | *.moved-aside
19 | *.pbxuser
20 | *.perspectivev3
21 | **/*sync/
22 | .sconsign.dblite
23 | .tags*
24 | **/.vagrant/
25 | **/DerivedData/
26 | Icon?
27 | **/Pods/
28 | **/.symlinks/
29 | profile
30 | xcuserdata
31 | **/.generated/
32 | Flutter/App.framework
33 | Flutter/Flutter.framework
34 | Flutter/Flutter.podspec
35 | Flutter/Generated.xcconfig
36 | Flutter/ephemeral/
37 | Flutter/app.flx
38 | Flutter/app.zip
39 | Flutter/flutter_assets/
40 | Flutter/flutter_export_environment.sh
41 | ServiceDefinitions.json
42 | Runner/GeneratedPluginRegistrant.*
43 |
44 | # macOS specific
45 | .DS_Store
46 | .AppleDouble
47 | .LSOverride
48 | ._*
49 |
50 | # Xcode
51 | *.xcodeproj/*
52 | !*.xcodeproj/project.pbxproj
53 | !*.xcodeproj/xcshareddata/
54 | !*.xcodeproj/project.xcworkspace/
55 | *.xcworkspace/
56 | !*.xcworkspace/contents.xcworkspacedata
57 | **/xcshareddata/WorkspaceSettings.xcsettings
58 |
59 | # Exceptions to above rules
60 | !default.mode1v3
61 | !default.mode2v3
62 | !default.pbxuser
63 | !default.perspectivev3
64 |
65 | # IDE specific
66 | .idea/
67 | .vscode/
68 | *.iml
69 | *.iws
70 | .project
71 | .classpath
72 | .settings/
73 |
74 | # Temporary files
75 | *.log
76 | *.swp
77 | .*.swp
78 | *~
79 |
--------------------------------------------------------------------------------
/ios/Config.xcconfig:
--------------------------------------------------------------------------------
1 | // Configuration settings file format documentation can be found at:
2 | // https://help.apple.com/xcode/#/dev745c5c974
3 |
4 | GOOGLE_MAPS_API_KEY=AIzaSyBRJd7Jbzg4OO2W4BNMLYjkCjW6QObULak
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
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 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '14.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | target 'RunnerTests' do
36 | inherit! :search_paths
37 | end
38 | end
39 |
40 | post_install do |installer|
41 | installer.pods_project.targets.each do |target|
42 | flutter_additional_ios_build_settings(target)
43 | end
44 | end
45 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import GoogleMaps
4 |
5 | @main
6 | @objc class AppDelegate: FlutterAppDelegate {
7 | override func application(
8 | _ application: UIApplication,
9 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
10 | ) -> Bool {
11 | if let apiKey = Bundle.main.object(forInfoDictionaryKey: "GOOGLE_MAPS_API_KEY") as? String {
12 | GMSServices.provideAPIKey(apiKey)
13 | } else {
14 | print("Error: Google Maps API key not found in Info.plist")
15 | return false
16 | }
17 |
18 | GeneratedPluginRegistrant.register(with: self)
19 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
20 | }
21 | }
--------------------------------------------------------------------------------
/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/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/Config.xcconfig.template:
--------------------------------------------------------------------------------
1 | // Configuration settings file format documentation can be found at:
2 | // https://help.apple.com/xcode/#/dev745c5c974
3 |
4 | GOOGLE_MAPS_API_KEY=your_google_maps_api_key_here
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSLocationWhenInUseUsageDescription
6 | This app requires access to your location to provide location-based services.
7 | NSLocationAlwaysUsageDescription
8 | This app requires access to your location at all times for better service.
9 | NSLocationUsageDescription
10 | This app requires access to your location to provide location-based services.
11 | CFBundleDevelopmentRegion
12 | $(DEVELOPMENT_LANGUAGE)
13 | CFBundleDisplayName
14 | Weyalaw
15 | CFBundleExecutable
16 | $(EXECUTABLE_NAME)
17 | CFBundleIdentifier
18 | $(PRODUCT_BUNDLE_IDENTIFIER)
19 | CFBundleInfoDictionaryVersion
20 | 6.0
21 | CFBundleName
22 | weyalaw
23 | CFBundlePackageType
24 | APPL
25 | CFBundleShortVersionString
26 | $(FLUTTER_BUILD_NAME)
27 | CFBundleSignature
28 | ????
29 | CFBundleVersion
30 | $(FLUTTER_BUILD_NUMBER)
31 | LSRequiresIPhoneOS
32 |
33 | UILaunchStoryboardName
34 | LaunchScreen
35 | UIMainStoryboardFile
36 | Main
37 | UISupportedInterfaceOrientations
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationLandscapeLeft
41 | UIInterfaceOrientationLandscapeRight
42 |
43 | UISupportedInterfaceOrientations~ipad
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationPortraitUpsideDown
47 | UIInterfaceOrientationLandscapeLeft
48 | UIInterfaceOrientationLandscapeRight
49 |
50 | CADisableMinimumFrameDurationOnPhone
51 |
52 | UIApplicationSupportsIndirectInputEvents
53 |
54 | FlutterDeepLinkingEnabled
55 |
56 | GOOGLE_MAPS_API_KEY
57 | $(GOOGLE_MAPS_API_KEY)
58 |
59 |
60 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/lib/_shared/data/models/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/lib/_shared/data/models/.gitkeep
--------------------------------------------------------------------------------
/lib/_shared/data/repo/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/lib/_shared/data/repo/.gitkeep
--------------------------------------------------------------------------------
/lib/_shared/presentation/dialog/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/lib/_shared/presentation/dialog/.gitkeep
--------------------------------------------------------------------------------
/lib/_shared/presentation/provider/base_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flutter_riverpod/flutter_riverpod.dart';
3 |
4 | class BaseNotifier extends StateNotifier {
5 | BaseNotifier() : super(BaseState());
6 |
7 | CancelToken cancelToken = CancelToken();
8 |
9 | void setLoading(bool isLoading) {
10 | state = state.copyWith(isLoading: isLoading);
11 | }
12 |
13 | bool get isLoading => state.isLoading;
14 | }
15 |
16 | class BaseState {
17 | final bool isLoading;
18 |
19 | BaseState({this.isLoading = false});
20 |
21 | BaseState copyWith({bool? isLoading}) {
22 | return BaseState(
23 | isLoading: isLoading ?? this.isLoading,
24 | );
25 | }
26 | }
27 |
28 | final baseNotifierProvider =
29 | StateNotifierProvider((ref) {
30 | return BaseNotifier();
31 | });
32 |
--------------------------------------------------------------------------------
/lib/_shared/presentation/screens/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/lib/_shared/presentation/screens/.gitkeep
--------------------------------------------------------------------------------
/lib/_shared/presentation/screens/error_screen.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../../../core/utils/src/print_util.dart';
4 |
5 | class ErrorScreen extends StatelessWidget {
6 | final Exception? error;
7 |
8 | const ErrorScreen(this.error, {super.key});
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | printLog("ErrorScreen: ${error?.toString()}");
13 | return const Scaffold(
14 | body: Center(
15 | child: Text(
16 | '404',
17 | style: TextStyle(
18 | fontSize: 48,
19 | fontWeight: FontWeight.bold,
20 | ),
21 | ),
22 | ),
23 | );
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/_shared/presentation/widgets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrnpro/Weyalaw/2b403db7857573b5bdff8c4a91033ca3ff9d3a23/lib/_shared/presentation/widgets/.gitkeep
--------------------------------------------------------------------------------
/lib/_shared/presentation/widgets/app_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AppContainer extends StatelessWidget {
4 | const AppContainer({
5 | super.key,
6 | required this.child,
7 | this.width,
8 | this.height,
9 | this.padding,
10 | this.margin,
11 | this.color,
12 | this.radius,
13 | this.isShadow = true,
14 | });
15 | final double? width;
16 | final double? height;
17 | final EdgeInsetsGeometry? padding;
18 | final EdgeInsetsGeometry? margin;
19 | final Widget child;
20 | final Color? color;
21 | final double? radius;
22 | final bool isShadow;
23 | @override
24 | Widget build(BuildContext context) {
25 | return Container(
26 | width: width,
27 | height: height,
28 | padding:
29 | padding ?? const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
30 | margin: margin,
31 | decoration: BoxDecoration(
32 | color: color ?? Colors.white,
33 | borderRadius: BorderRadius.circular(radius ?? 12),
34 | boxShadow: isShadow
35 | ? [
36 | BoxShadow(
37 | color: Colors.grey.withOpacity(0.3),
38 | spreadRadius: 7,
39 | blurRadius: 10,
40 | offset: const Offset(0, 4),
41 | ),
42 | ]
43 | : null,
44 | ),
45 | child: child,
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/lib/_shared/presentation/widgets/back_btn.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:go_router/go_router.dart';
3 |
4 | class BackBtn extends StatelessWidget {
5 | const BackBtn({
6 | super.key,
7 | });
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return IconButton.filled(
12 | style: IconButton.styleFrom(
13 | backgroundColor: Colors.white,
14 | foregroundColor: Colors.black,
15 | ),
16 | onPressed: () {
17 | context.pop();
18 | },
19 | icon: const Icon(Icons.arrow_back));
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/_shared/presentation/widgets/border_less_text_field.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class BorderLessTextField extends StatelessWidget {
4 | const BorderLessTextField(
5 | {super.key,
6 | this.onChanged,
7 | required this.hintText,
8 | required this.controller,
9 | required this.label});
10 |
11 | final String hintText;
12 | final TextEditingController controller;
13 | final String label;
14 |
15 | final Function(String value)? onChanged;
16 | @override
17 | Widget build(BuildContext context) {
18 | return Column(
19 | crossAxisAlignment: CrossAxisAlignment.start,
20 | children: [
21 | Text(label,
22 | style: TextStyle(
23 | color: const Color(0xFF000000).withOpacity(0.5),
24 | fontSize: 15,
25 | fontWeight: FontWeight.bold,
26 | )),
27 | SizedBox(
28 | width: 300,
29 | child: TextField(
30 | controller: controller,
31 | onChanged: onChanged,
32 | decoration: InputDecoration(
33 | isDense: true,
34 | contentPadding: EdgeInsets.zero,
35 | hintText: hintText,
36 | border: InputBorder.none,
37 | fillColor: Colors.transparent,
38 | filled: true,
39 | ),
40 | ),
41 | ),
42 | ],
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/_shared/presentation/widgets/navigation.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_svg/svg.dart';
3 | import 'package:weyalaw/core/config/theme/color_pallete.dart';
4 | import 'package:weyalaw/core/constants/assets.dart';
5 | import 'package:go_router/go_router.dart';
6 | import 'package:hooks_riverpod/hooks_riverpod.dart';
7 |
8 | class AppBottomNavigation extends HookConsumerWidget {
9 | const AppBottomNavigation({
10 | Key? key,
11 | required this.navigationShell,
12 | }) : super(key: key ?? const ValueKey('AppBottomNavigation'));
13 | final StatefulNavigationShell navigationShell;
14 |
15 | void _goBranch(int index) {
16 | navigationShell.goBranch(
17 | index,
18 | initialLocation: index == navigationShell.currentIndex,
19 | );
20 | }
21 |
22 | @override
23 | Widget build(BuildContext context, WidgetRef ref) {
24 | return Scaffold(
25 | body: navigationShell,
26 | bottomNavigationBar: Container(
27 | height: 80,
28 | decoration: BoxDecoration(
29 | color: Colors.white,
30 | borderRadius: BorderRadius.circular(16),
31 | ),
32 | child: NavigationBar(
33 | backgroundColor: Colors.transparent,
34 | selectedIndex: navigationShell.currentIndex,
35 | labelBehavior: NavigationDestinationLabelBehavior.alwaysHide,
36 | indicatorColor: Colors.transparent,
37 | destinations: [
38 | ...navigationIcons.map((e) {
39 | final index = navigationIcons.indexOf(e);
40 | final isSelected = navigationShell.currentIndex == index;
41 | return NavigationDestination(
42 | label: e.label,
43 | icon: SvgPicture.asset(e.icon,
44 | colorFilter: ColorFilter.mode(
45 | isSelected ? ColorPalette.primary : Colors.black,
46 | BlendMode.srcIn)),
47 | );
48 | }),
49 | ],
50 | onDestinationSelected: _goBranch,
51 | ),
52 | ),
53 | );
54 | }
55 | }
56 |
57 | final List<({String label, String icon})> navigationIcons = [
58 | (label: 'Home', icon: Assets.assetsSvgsHome),
59 | (label: 'Bus', icon: Assets.assetsSvgsBusIcon),
60 | (label: 'Profile', icon: Assets.assetsSvgsProfile),
61 | ];
62 |
--------------------------------------------------------------------------------
/lib/app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_riverpod/flutter_riverpod.dart';
3 |
4 | import 'core/config/router/router.dart';
5 | import 'core/config/theme/theme_config.dart';
6 |
7 | class App extends ConsumerWidget {
8 | const App({super.key});
9 | @override
10 | Widget build(BuildContext context, WidgetRef ref) {
11 | final router = ref.watch(routerProvider);
12 | final theme = ref.watch(themeProvider);
13 | return MaterialApp.router(
14 | theme: theme,
15 | routeInformationProvider: router.routeInformationProvider,
16 | routeInformationParser: router.routeInformationParser,
17 | routerDelegate: router.routerDelegate,
18 | title: "Weyalaw",
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/core/analytics/observers/observers.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:weyalaw/core/utils/index.dart';
3 |
4 | class NavigatorObserverAnalytics extends NavigatorObserver {
5 | @override
6 | void didPush(Route route, Route? previousRoute) {
7 | printLog('did push route');
8 | }
9 |
10 | @override
11 | void didPop(Route route, Route? previousRoute) {
12 | printLog('did pop');
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/core/analytics/observers/riverpod_loger.dart:
--------------------------------------------------------------------------------
1 | import 'package:weyalaw/core/utils/index.dart';
2 | import 'package:hooks_riverpod/hooks_riverpod.dart';
3 |
4 | class RiverpodLogger extends ProviderObserver {
5 | @override
6 | void didDisposeProvider(
7 | ProviderBase