Before you run the application, make sure you add google maps API Key in the following places:
- 1
/android/app/src/main/AndroidManifest.xml => [ <meta-data android:name="com.google.android.geo.API_KEY"android:value="API_KEY"/>]
- 2 Add your api key in the
.env
file found inlib/assets
:
GOOGLE_MAP_API_KEY=Your API Key
Develop an application that visualizes crime loations:
-
Areas with less than 5 crime reports are marked with a green marker ,those with between 5 and 20 are marked with a yellow marker while those above 20 reports are marked with a red marker.
-
Areas within 500 meters radius are categorized as one crime location and have a circle marking the areas with respect to number of crime reported.
-
Adding a new area that is within 500 meter radius of an existing location will just update the crime report number else a new crime spot will be created.
-
Users can upload images of the crime spots.
Places search is set to Kenya only. To enable it in your country or to make it global,consider removing the restriction in /lib/src/data/services/places service
file.
-
Tech-stack
- Flutter - a cross-platform, framework for building mobile applications.
- Dart - client-optimized language for fast apps on any platform.
- Provider - A wrapper around InheritedWidget to make them easier to use and more reusable.(State management)
- Google Sign in - A plugin to access Google Sign in.
- Geocoding - A Flutter Geocoding plugin which provides easy geocoding and reverse-geocoding features.
- Google Places - A Flutter package for handle google place api that place search and details and photos and autocomplete and query autocomplete requests
- Cloud Firestore - Flutter plugin for Cloud Firestore, a cloud-hosted, noSQL database with live synchronization and offline support on Android and iOS.
- Firebase Storage - Flutter plugin for Firebase Cloud Storage, a powerful, simple, and cost-effective object storage service for Android and iOS.
-
Architecture
- MVVM Architecture
All the dependencies (external libraries) are defined in a single place - pubspec.yaml
file. This approach allows to easily manage dependencies and use the same dependency version across all modules.
The screenshot below shows the working application:
LogIn | Map Screen | Add Crime | Location Images |
2021