A new Flutter project.
- Download Visual Studio Code (VSC), the officially supported IDE of the team. In addition, you should acquire the following extensions:
Dart
byDart Code
Flutter
byDart Code
GitLense - Git supercharged
byGitKraken
Git Blame
byWade Anderson
- Fork the upstream repo.
- Clone the forked repo.
- Navigate your terminal to the repo base and run
flutter pub get
to get project dependencies. - Add necessary secrets to their appropriate locations.
- Add
MAPS_API_KEY=<redacted>
toandroid/local.properties
. TODO: Remove this later.
- Open
android
subdirectory in Android Studio. Doing so will run some Gradle actions to ready the emulator. Once the project fully loads you can close Android Studio. - Enable USB debugging on your mobile device.
- Open the base of the repo in VSC, plug your mobile device into your computer, and run the debugger.
- Create a
credentials
subdirectory underassets
. You will need to acquire and savebucket_credentials.json
from GCP.
- Encountering
Could not determine the dependencies of task ':app:processDebugManifest'.
on attempt to debug?- Did you follow the Getting Started steps in this document to setup your repo?
If not, you're likely missing a necessary entry, e.g.
MAPS_API_KEY
- If that doesn't work, open the
android
directory in Android Studio; this should reveal in the build pane why the project can't be built.
- Did you follow the Getting Started steps in this document to setup your repo?
If not, you're likely missing a necessary entry, e.g.
- Many, many things
- Implement action tracking for debugging
- User actions
- Application state changes
- Handle the situation where the user doesn't allow access to their current position.
- At tow destination screen, give user option to select a nearby mechanic shop.
- While customer is waiting for provider to engage...
- Is there a timeout for this?
- Provider auction functionality
- Error handling
- registration attempt
- login attempt
- Provider UX
- Either add more details to the items in the provider's select screen, or have an intermediate 'more details' page before moving onto provider_engaged. Moving onto provider_engaged should automatically commit the driver to that request. Add a confirm modal before it commits them.
- Remove all reference to secrets!!!
- Set up a project in GCP for cloud services. Services you will need:
- Google Maps Platform
- "Maps SDK for Android" (not Geolocation API)
- "Maps SDK for iOS"
- "Directions API"
- Google Maps Platform
AndroidManifest.xml
changes- Set up
<meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/>
within AndroidManifest.xml. You get the API key from GCP.- Don't forget to not check in the secret
- "ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION"
- Set up
AppDelegate.swift
- Add
GMSServices.provideAPIKey("your API key")
- Add
Info.plist
- Add
<key>NSLocationWhenInUseUsageDescription</key> <string>This app needs access to location when open.</string>
- Add
pubsec.yaml
- Add
flutter_polyline_points: ^1.0.0 geolocator: ^7.4.0 geocoding: ^2.0.1 google_maps_flutter: ^2.0.6
- Add
- "When you really do want to start a fire-and-forget Future, the recommended way is to use unawaited from package:pedantic." https://dart-lang.github.io/linter/lints/unawaited_futures.html