* fix path separator bug in cookbook scraper
* update lockfiles
* add category to image name to avoid conflicts
e.g.
testing/integration/introduction
testing/widget/introduction
* fix form_app symlink
* remove webimages directory
* remove vision_challenge
vision_challenge doesn't build on the dev channel
* update pubspec.yaml in _tool and form_app
* logout wip
* Use AnimatedSwitcher, change lingo from "login" to signIn"
* add automatic sign-in
* fix flashing sign in button
* sign out of FirebaseAuth and GoogleSignIn
* formatting
* change isSignedIn() to getter
* Add error handling for sign in
* improve error handling at login screen
* add mock data, app state, model classes
* Set up app without ChangeNotifier
* refactor
* add experiments to experimental/
* Add project-agnostic Firebase authentication code
* add sign in button
* add stub firebase API
* add firestore
* refactor code for google_sign_in
* update pubspec.lock
* switch to mocks for non-firebase version
* Add firebase instructions to the README
* fix README
* sign in silently if the user is already signed in
* add json_serializable
* update README
* ignore 'id' field on types
* Implement FirebaseItemApi
* Add build_runner instructions to README
* remove experiments directory
* add EditItemForm
* move types.dart into api.dart
* move mock and firebase configuration into the constructor
* add main_mock entrypoint
* add copyright checks to grinder script
* fix fix-copyright task
* run grind fix-copyright
* add run and generate tasks
* add run tasks to grind script
* add fillWithMockData() fix delete() in mock API
* add edit / new form dialogs
* Add charts that display entries from Firebase
* Add Entries list without editing
* refactor home page
* format
* Add entries page functionality
* Show current day in charts
* cleanup: pubspec.lock, remove type annotation
* Remove _selectedItem from Home page
Add ItemsDropdown
Use ItemsDropdown in NewEntryDialog / NewEntryForm
* rename item-category
* don't wait to show snackbar on delete
* fix circular progress indicator
* Move dialogs into dialogs.dart
* run grind fix-copyright
* remove unused import
* Refactor entry total calculation, add chart_utils library
* fix bug in chart_utils.dart
* convert CategoryChart to a stateless widget
* use a const for number of days in chart
* code review updates
- rename stream -> subscribe
- timeStamp -> timestamp
- remove latest() from API
- use FutureBuilder and StreamBuilder instead of stateful widget
- rename variables in mock_service_test.dart
* use a single collection reference in firebase API
* remove reference to stream in mock API
* Use a new type, _EntriesEvent to improve filtering in mock API
* add analysis_options.yaml and fix (most) issues
* fix avoid_types_on_closure_parameters lint warnings
* use spread operator in dashboard.dart
* handle case where selected item in the category dropdown goes away
* use StreamBuilder + FutureBuilder on Entries page
* rename method
* use fake firebase configuration
* update pubspec.lock
* update README
* Change categories_dropdown to FutureBuilder + StreamBuilder
* Update minSdkVersion in build.gradle
SDK version 16 was failing: "The number of method references in a .dex
file cannot exceed 64K."
* update README
* Use a collection reference in FirebaseEntryApi
Already added to FirebaseCategoryApi
* Invoke onSelected in CategoriesDropdown when necessary
Also, avoid calling onSelected during a build.
* fix misnamed var
* remove unused import
* Use relative imports
* Use extension methods for DateTime utilities
* remove forms.dart
* Make Firebase instructions specific for this sample
* add copyright headers
* fix grammar
* dartfmt
* avoid setState() during build phase in CategoryDropdown
* add empty test to material_theme_builder
* add web_dashboard sample
* add docs
* address code review comments
* restructure web_dashboard
* set up provider and mock service
* add copyright headers, use relative imports
* add API class, add tests
* fmt
* rename services -> API, remove data library
* use new API in app
* add stream to items api
* convert from StreamBuilder to StreamProvider
* add subscription to Entry API
* rename API classes
* address comments
* Update README.md
* update README
* remove routing_demo