* 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
* add samples_index to web/ directory
Co-authored-by: Thea Flowers <theaflowers@google.com>
* add pub_get.dart script
* build sample index in peanut post build
* re-generate sample index with web demos
* print more details in peanut_post_build.dart
* add images for demos
* run generator
* update README
* add animations and provider shopper as symlinks
* add links to symlinked web demos
* use relative paths
* update cookbook images, urls, and description CSS
* use relative URL for navbar link
* unstage HTML files
* .gitignore generated HTML files
* add margin to toolbar
* rename escape functions
* add and update copyright headers
Co-authored-by: Thea Flowers <theaflowers@google.com>
* 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
* Upgrade to pkg:provider 4.0
* Follow best practice of ProxyProvider updating
The addresses feedback from https://github.com/flutter/samples/issues/245. Instead of constructing a new `CartModel`, we merely update the `catalog` field.
We no longer need a fancy constructor, and `CartModel._catalog` cannot be final any more.