fluttercommunity / fluttercommunity/backdrop
Proposal document for v1.0
- Dominant language
- Dart
- Stars
- 347
- Forks
- 36
- PR merge metrics
- No merged PRs in 30d
Description
**This is the proposal document for 1.0 version of the package intended to discuss and finalise the APIs of the package.**
## List of Objectives
1. provide **easy and quick** way to implement **all the use cases** of [backdrop component as defined in Material Design Guideline](https://material.io/components/backdrop/)
2. implementations should assume **defaults** but be **configurable and extendable** by the user for any custom behaviour
3. **code examples** of various use-cases should be provided
4. proper **API documentation** should be added
## APIs
To achieve the above-mentioned objectives following are the public classes that need to be implemented:
* [x] 1. **`Backdrop`**` extends InheritedWidget` : This class exposes `BackdropScaffoldState` for any widget down the tree using the convenient `Backdrop.of(context)`. The `BackdropScaffoldState` in itself exposes some helper methods like `fling`, `showBackLayer`, `showFrontLayer`, underlying `Scaffold` widget, `AnimationController` etc.
* [x] 2. **`BackdropScaffold`**` extends StatefulWidget` : It is the backdrop equivalent to `Scaffold` widget. This is the main layout widget that implements the core behaviour of the backdrop. It should act as the entry point to implementing backdrop with the most basic use cases as default. Additional behaviours could be added to it using other widgets just like how `appBar`, `drawer`, `bottomNavigationBar` are added with `Scaffold`.
* [x] #6 3. **`BackdropAppBar`**` extends StatefulWidget`: It is the backdrop equivalent to `AppBar` widget. This widget should provide APIs to define the behaviour of the app bar of the backdrop - icon, title, actions, etc. Various app bar uses cases mentioned in the guideline should be configured using this widget.
* [x] 4. **`BackdropToggleButton`**`extends StatelessWidget` : A convenient widget to drop in to fling the backdrop back and forth. This could be used in `actions` in `BackdropAppBar` to fling backdrop from the right side of the app bar.
* [x] 5. **`BackdropNavigationBackLayer`**` extends StatefulWidget` : It is the backdrop equivalent of `BottomNavigationBar`. A convenient widget to implement navigation pattern with the backdrop - using `backLayer` to display a list of items, tapping on which would display the corresponding widget in `frontLayer`. `BackdropNavigationItem` could be used to encapsulate the widget that needs to be displayed, just like how `BottomNavigationBarItem` is used. However, unlike `BottomNavigationBar` the UI of a list of items should be configurable by the user.
## Other Tasks
* [x] API documentation of all Classes, Properties and Methods using [Effective Dart: Documentation Guide](https://dart.dev/guides/language/effective-dart/documentation).
* [x] #26 add SubHeader to Backdrop Front Layer as specified in the MDG.
* [x] #7 Demo app that demonstrates all use-cases of Backdrop as mentioned in the [Material Design Guideline](https://material.io/components/backdrop/).
* [ ] #8 Proper README and additional tutorial guides (optional) to make easier for user to get started with package.
* [x] deprecate attributes and widgets
* [x] ci-cd tooling (preferably Github Action) to update github pages when master is updated.
* [ ] #78 automatic testing with ci-cd
## Quick Links
- Milestone: [v1.0](https://github.com/fluttercommunity/backdrop/milestone/1)
- Project: [v1.0 Dev](https://github.com/fluttercommunity/backdrop/projects/1)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.