plus ultra
- get google maps api key
- get added to firebase project
- get some juice
flutter drive --target=test_driver/app.dart
in streamOfCreatedGames
eg. we could set the API key with a command line argument:
Was looking at #51 and couldn't find NavigationService
, found it inside the auth
folder - just wanted to move it up to the top level services
folder but wanted to do it in a separate PR so the file changes don't get mixed in with #51 and make it a more difficult review. Thanks!
Oh I'm also going to sneak in adding a .vscode/launch.json
file if that's cool - it's the file that allows for a button press to start the debugger.
lobby will be the bottom route so no need to worry about popping out of it on back button tap
problem: get primary variant color in accesssible place
#observe lobby screen
in info.plist
write copy in "niira" tone, or just more friendlier then default ios messages
Find detailed steps to get start with Google Maps Platform here.
on successful create account:
create new firebase project
Potential subtasks
-requires #56 & #55 & #97, #106 & #108
When navigate to lobby:
get users location and pass it to gameTile
write fn to calculate distance between user location & game.boundary.position (games location)
e.g with geolocator package: double distanceInMeters = await Geolocator().distanceBetween(52.2165157, 6.9437819, 52.3546274, 4.8285838);
display distance in ui
show distance to nearest 100m
order list of games from nearest to furtherest away
test distance function, is it getting same output as geolocator distance funtion would get?
test all widgets
unit test distance fn
navigate to input password screen via pushnamedroute
most test files are just widget_test.dart
rename them to be more specific e.g create_account_widget_test.dart
Is your feature request related to a problem? Please describe.
When the debugger is paused, hitting Hot Restart can cause the debugger to hang.
Describe the solution you'd like
I think the issue may be fixed by moving the services into runApp
##on submit create account form:
- [ ] check if username has been taken
- [ ] show snackbar error msg if has been taken
##on successfull create account:
- [ ] add username to player doc in firestore
requires #54
create the tile UI
on tap, navigate to InputPasswordScreen
create mockdata
create method in firestoreService to listen to games collection
use mockdata in tests
a game includes:
One off setup
On a push on to release
:
navigate between create account and sign in via some state so when we pop after a successfull sign in it will always go back to the original material app
navigate to lobby on success
##call sign in with firebase on submit sign in form
sign in to firebase account
show snackbar if firebase auth error
wait for authstatechanged to redirect to lobby screen
test sign in with email & pword fn
navigate between welcome screen, sign in, create account, all while having access to authStateStream
@tamari-gray hey mate, I didn't notice when we were working on this last sorry or I could have discussed it with you then, I suggest that the mocks be moved into the test
dir for now and as we need mocks for the integration tests we create them in test_driver
- it's a weird one, terrible for code reuse but arguably different enough contexts to have different classes anyway and you get a lot of benefits - the autocomplete will work being the big one I think... what do you reckon? If you agree I'm happy to put up a PR. Thanks!
Right now, on app load we need to:
runApp()
which will probably cause longer white screen on load)Could be just as simple as -> keep state for completion of async tasks and show a waiting indicator until all async tasks have completed
Some other possibilities off the top of my head:
quiting game forces all joined players to quit
check if user is admin: get game.admin id + authservice.userId => check if same then give user admin privilages
create AdminQuitCreatingGame bool in game object
make waitingForGameToStartScreen listen to streamOfJoinedGame =>
when admin quits, make AdminQuitCreatingGame() fn in database service => sets AdminQuitCreatingGame: true in fb
[ ]
show start game fab if user is admin
if tagger is chosen => confirmation dialog => navigation to playingGame
if no tagger is chosen =>pop toast "please choose tagger first"
update taggerTile to be light orange color
This package you found looks great @tamari-gray !
setup firebase auth
firebase create account
firebase sign in
Add UI:
'drag boundary' text => "move map to reposition boundary"
boundary size slider -> sets the boundary size, which updates the boundary on the map
sonar intervals slider -> sets the sonar value, shown in slider
add a cancel button in app bar -> pops back to Lobby
Next fab -> navigates to waitingScreen
make user icon size relative to camera zoom
whenever get a firebase request error, show the user a snackbar or dialog
implement check if username has been taken
youll get another badge, and it will help when people come to fork
Hey @tamari-gray! After we spoke about this recently I dug up my old notes and added to the wiki:
Testing · Adventures-In/Adventures-In Wiki
Please don't hesitate to close the ticket if it's not relevant. Have a good one!
lots of files are creating the same mocks/fakes.
to prevent code reuse create a factory class of mock or fake class and store in test_driver/mocks
shows "are you sure" dialog
local.properties
file in app/build.gradle to get API KeyFlutter/MapsKey.xcconfig
with MAPS_API_KEY=...
<key>maps_api_key</key>
<string>$(MAPS_API_KEY)</string>
<key>io.flutter.embedded_views_preview</key>
<true/>
AppDelegate.swift
to retrieve the API key and provide it to the Mapslet mapsKey = Bundle.main.infoDictionary?["maps_api_key"] as! String
GMSServices.provideAPIKey(mapsKey)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.