- Clone this repository
- Cd into the repository
- Run 'flutter pub get'
- Run the project with 'flutter run'
- You can also run the project by linking through Xcode if testing on an Apple device or simulator
- Once the app is ready, you can pan, zoom around the map, click on bikes, scooters, and bus stops to gain information about them, and use the legend to enable/disable vehicle types and move to your location
![Screenshot 2024-10-03 at 9 21 05 PM](https://private-user-images.githubusercontent.com/117118889/373502689-7f5e7c1f-1428-4b9e-bf30-3fc3ebe4045e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk4OTMsIm5iZiI6MTczOTI0OTU5MywicGF0aCI6Ii8xMTcxMTg4ODkvMzczNTAyNjg5LTdmNWU3YzFmLTE0MjgtNGI5ZS1iZjMwLTNmYzNlYmU0MDQ1ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDUzMTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kY2EyNWVhY2M2OTdkZThiNWFmYzk1MWRhYzY1OTY3MGU4YjFmYThmNzY2M2Y2NjVlZGVkYWY0ZjQwM2I2NGQwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.W8l0EnYpadAPZGtb9OzSlawU6H_vmAZ4cn0sZvDod9U)
![Screenshot 2024-10-03 at 9 22 20 PM](https://private-user-images.githubusercontent.com/117118889/373502708-b5d3a5a6-25d0-4e7b-8dc6-85b2ccd9473e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk4OTMsIm5iZiI6MTczOTI0OTU5MywicGF0aCI6Ii8xMTcxMTg4ODkvMzczNTAyNzA4LWI1ZDNhNWE2LTI1ZDAtNGU3Yi04ZGM2LTg1YjJjY2Q5NDczZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDUzMTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jN2JmYjVlNjgyNGY5NTNiMzAyOTA1ZjUzY2RkY2NjZDQ1ODM4ZTYzYTFlNzYyYWQ3YzQ2Njg1ZTU5NTY2ZjkxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.GXa9fWC6hwP2O9H4Tjc1pWIP35aDdjEvQFw6SQuHabw)
- bus_stops.csv
- lemun_compass.png: image for the compass
- scooter_checker.dart: Helper to update the list of scooters and bikes near the user
- bus_stop_db.dart: a database of the bus stops, represented as a list of bus stops, created from the csv in the assets
- bus_stop.dart: represents a single bus stop, with its name and position
- city.dart: enum with all the citiees in the Lime API
- drawing.dart: object to hold the draw actions of the user
- lime.dart: object to hold the data of Lime scooters and bikes
- link_scooter.dart: object to hold the data of Link scooters
- tools.dart: enum to determine what tool is being used on the canvas
- vehicle_types.dart: enum to determine what type of vehicle is being used (bus, scooter, bike)
- vehicle.dart: contains abstract class Vehicle to wrap around all vehicle types, has basic information of type, longitude, latitude
- draw_actions.dart: Superclass to all draw actions
- clear_action.dart: Used to indicate the canvas was cleared
- null_action.dart: Used to indicate no stroke is being registered
- stroke_action.dart: Used to indicate user is drawing on the canvas
- drawing_provider.dart: Used to handle state of the drawing
- opacity_provider.dart: Used to handle state of the appbar
- position_provider.dart: Used to handle state of the user's position
- scooter_provider.dart: Used to handle state of the nearby scooters and bikes
- city_selector.dart: Builds the drawer for selecting what city you are in
- compass_view.dart: contains CompassView class which requires a vehicle and displays a compass pointing from your current position to that vehicle. Also provides additional information about the vehicle such as availability and distance.
- draw_area.dart: The canvas the user will see (although it is invisible)
- drawing_painter.dart: Displays the strokes the user took
- home_page.dart: Contains references to all the other views and logic for switching between them
- map_view.dart: contains MapView class, main view of the app displaying flutter_map and custom legend/filter Clicking a marker on the map brings you to compass_view for that marker
- palette.dart: Builds the drawer for selecting colors for drawing
- Builds the bus db and creates providers for all the data models, calling home_page and starting the app
Flutter provider used to periodically check with the scooter and bike APIs to make sure the vehicles nearby are up to date, which will update the Lists used to populate the map. Provider used to manage the state of the entire app, between being able to scroll through the map and being able to draw a path. This was done by toggling on and off a transparent version of the drawing app that we made, and changing what the drawer would contain (between colors and cities).