fluttercommunity/backdrop

Proposal document for v1.0

daadu opened this issue ยท 7 comments

daadu commented

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
  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:

  • 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.

  • 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.

  • #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.

  • 4. BackdropToggleButtonextends 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.

  • 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

  • API documentation of all Classes, Properties and Methods using Effective Dart: Documentation Guide.
  • #26 add SubHeader to Backdrop Front Layer as specified in the MDG.
  • #7 Demo app that demonstrates all use-cases of Backdrop as mentioned in the Material Design Guideline.
  • #8 Proper README and additional tutorial guides (optional) to make easier for user to get started with package.
  • deprecate attributes and widgets
  • ci-cd tooling (preferably Github Action) to update github pages when master is updated.
  • #78 automatic testing with ci-cd

Quick Links

daadu commented

@all-contributors please add @daadu for Code, Ideas & Planning

@daadu

I've put up a pull request to add @daadu! ๐ŸŽ‰

daadu commented

@all-contributors please add @WieFel for Code, Documentation

@daadu

I've put up a pull request to add @WieFel! ๐ŸŽ‰

@all-contributors please add @danielborges93 for bug,code

daadu commented

Congrats @WieFel - We have implemented all widgets planned. Give yourself a pat on your back!!