Backdrop implementation in flutter.

Overview

Flutter Community: backdrop

backdrop

Demo Gitter All Contributors pub.dev pub points popularity likes analysis GitHub issues GitHub milestone GitHub stars GitHub forks Gitlab stars Gitlab forks

Backdrop implementation in flutter.

This widget is in active development. Any contribution, idea, criticism or feedback is welcomed.

NOTE: If using Flutter v1.x.x, use v0.5.x pub version.

Quick links

package https://pub.dev/packages/backdrop
Live Demo https://fluttercommunity.github.io/backdrop/demo/#/
Git Repo https://github.com/fluttercommunity/backdrop
Issue Tracker https://github.com/fluttercommunity/backdrop/issues
Chat Room https://gitter.im/flutter-backdrop

Getting started

Follow the medium article to Quickly Implement Backdrop in Flutter.

Usage

BackdropScaffold

Use BackdropScaffold instead of the standard Scaffold in your app. A backLayer and a frontLayer have to be defined for the backdrop to work.

BackdropScaffold(
  appBar: BackdropAppBar(
    title: Text("Backdrop Example"),
    actions: <Widget>[
      BackdropToggleButton(
        icon: AnimatedIcons.list_view,
      )
    ],
  ),
  backLayer: Center(
    child: Text("Back Layer"),
  ),
  frontLayer: Center(
    child: Text("Front Layer"),
  ),
)
BackdropScaffold example

Navigation with backdrop

To use backdrop for navigation, use the provided BackdropNavigationBackLayer as backLayer.

The BackdropNavigationBackLayer contains a property items representing the list elements shown on the back layer. The front layer has to be "manually" set depending on the current index, which can be accessed with the onTap callback.

int _currentIndex = 0;
final List<Widget> _pages = [Widget1(), Widget2()];

@override
Widget build(BuildContext context) {
  return MaterialApp(
    title: 'Backdrop Demo',
    home: BackdropScaffold(
      appBar: BackdropAppBar(
        title: Text("Navigation Example"),
        actions: <Widget>[
          BackdropToggleButton(
            icon: AnimatedIcons.list_view,
          )
        ],
      ),
      stickyFrontLayer: true,
      frontLayer: _pages[_currentIndex],
      backLayer: BackdropNavigationBackLayer(
        items: [
          ListTile(title: Text("Widget 1")),
          ListTile(title: Text("Widget 2")),
        ],
        onTap: (int position) => {setState(() => _currentIndex = position)},
      ),
    ),
  );
}
BackdropNavigationScaffold example

Accessing underlying backdrop functionalities

To access backdrop related functionalities, use Backdrop.of(context) to get underlying BackdropScaffoldState.

BackdropScaffoldState exposes various properties and methods like:

  • properties
    • controller -> AnimationController
    • scaffoldKey -> GlobalKey<ScaffoldState>
    • isBackLayerConcealed -> bool
    • isBackLayerRevealed -> bool
  • methods
    • fling()
    • concealBackLayer()
    • revealBackLayer()

Note: Backdrop is an InheritedWidget and therefore like Scaffold.of, Theme.of and MediaQuery.of, the BuildContext context passed to Backdrop.of(context) should be of a Widget that is under the BackdropScaffold in the "widget tree". In other words, Backdrop.of called inside a widget where the BackdropScaffold is initalized will not work explicitly, since the context passed is of the widget that will build BackdropScaffold therefore above BackdropScaffold. This can be solved by either making a seperate Widget where Backdrop.of needs to be used and make it the "child" of BackdropScaffold or wrap the Backdrop.of usage around Builder widget so that the "correct" context (from Builder) is passed to Backdrop.of. This answere on SO and FWotW video on Builder gives a very good idea of how and why Builder works in later case.

For more information, check out sample code in the example directory, demo app with use-cases and code for it and API references generated by pub.dev.

Contribute

Check proposal documents for v1.0 and web&desktop milestones before you begin with any contibution.

  1. You'll need a GitHub account.
  2. Fork the repository.
  3. Pick an issue to work on from issue tracker.
  4. Implement it.
  5. Add your name and email in authors section in pubspec.yaml file.
  6. Send merge request.
  7. Star this project.
  8. Become a hero!!

Features and bugs

Please file feature requests and bugs at the issue tracker.

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


Harsh Bhikadia

๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€

Felix

๐Ÿ’ป ๐Ÿ“– ๐Ÿ› ๐Ÿ‘€ ๐Ÿ’ก ๐Ÿš‡

Bringmos

??

Greg Spencer

๐Ÿ›

Jorge A Peroza M

๐Ÿ› ๐Ÿ’ป

Matt Newell

๐Ÿ›

Daniel Borges

๐Ÿ› ๐Ÿ’ป

Felix Wortmann

๐Ÿ’ป ๐Ÿ‘€ ๐Ÿ›

Pierre Grimaud

๐Ÿ“–

ะ’ะฐะดะธะผ

๐Ÿ’ป

Danial Agh

๐Ÿ›

PembaTamang

๐Ÿ›

hassan

๐Ÿ›

Yaroslav Pronin

๐Ÿ› ๐Ÿ’ป ๐Ÿ‘€

Enikuomehin Adejuwon

๐Ÿ’ป

Nwachi ifeanyichukwu Victor

๐Ÿ’ป

mockturtl

๐Ÿ’ป ๐Ÿ“–

ritar

๐Ÿ›

LorenzoVianello

๐Ÿ›

Scott

๐Ÿ’ป

Sachin Dahal

๐Ÿ“–

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Close back layer programatically [need to document it]

    Close back layer programatically [need to document it]

    It would be great, if you could close or toggle between front and back layers programatically without using BackdropToggleButton. I did not find a way, how to do it.

    For example - I am using some filters in this widget and when user select filter, I would like to close back layer automatically, without user need to click on toggle button in the appbar's actions.

    If you have any idea, how to implement this with existing code, please let me know.

    Thanks for your time and suggestions.

    opened by TenPetr 24
  • Cannot set inactiveOverlayColor to transparent

    Cannot set inactiveOverlayColor to transparent

    The inactiveOverLayColor set to Colors.transparent does not work

    My layout

    BackdropScaffold(
          appBar: BackdropAppBar(
            backgroundColor: Colors.deepOrange,
            title: Text('Food Delivery App'),
          ),
          backLayer:  Container(
            height: 200.0,
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Padding(
                  padding: const EdgeInsets.only(left: 16,top: 16),
                  child: Text('Theme',style: TextStyle(color: Colors.white,fontWeight: FontWeight.bold),),
                ),
            SwitchListTile(
              activeColor: Colors.orange,
            inactiveThumbColor: Colors.black,
            title: Text('$themeText',style: TextStyle(color: Colors.white,fontWeight: FontWeight.w400)),
            value: _lights,
            onChanged: (bool value) { setState(() {
              _lights = value;
              themeText = value? 'Light':'Dark';
            }); },
            secondary: const Icon(Icons.lightbulb_outline,color: Colors.white,),
          ),
              ],
            ),
          ),
          frontLayer: Center(
            child: SafeArea(
              child: Container(
                decoration: BoxDecoration(
                    gradient: LinearGradient(colors: [
                      Colors.orange,
                      Colors.deepOrange.withOpacity(0.9),
                      Colors.deepOrange,
                    ], begin: Alignment.bottomCenter, end: Alignment.topCenter)),
                child: ListView(
                  padding: EdgeInsets.symmetric(horizontal: 8.0),
                  children: [
                    SizedBox(height: 10),
                    TopInfo(),
                    FoodCategory(),
                    SizedBox(height: 10),
                    SearchField(),
                    SizedBox(height: 10),
                    MiddleLayout(),
                    Column(
                      children: foods.map((FoodData food) {
                        return getFoodItems(food);
                      }).toList(),
                    ),
    
                  ],
                ),
              ),
    
            ),
          ),
          stickyFrontLayer: true,
          resizeToAvoidBottomInset: false,
          backLayerBackgroundColor: Colors.deepOrange,
          animationCurve: Curves.easeIn,
          inactiveOverlayColor: Colors.transparent,
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              print('pressed');
            },
            child: Icon(
              Icons.category,
              color: Colors.black45,
            ),
            backgroundColor: Colors.orangeAccent,
          ),
          floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
    
        );
    

    I have also tried to set a color withAlpa(0) that is not working as well Also there is no option to add a bottomnav or a bottomappbar in BackdropScaffold like the regular scaffold. WhatsApp Image 2020-09-05 at 21 14 19

    enhancement 
    opened by PembaTamang 14
  • Add Subheader option

    Add Subheader option

    I think it would be a good idea to make it possible to add a header for the FrontLayer while it is not visible

    According to the Material Design guidelines it should also be part of a backdrop

    It should look like this (at the bottom):

    image

    enhancement 
    opened by felixwortmann 13
  • problem in scrolling front layer on change of grid delegate

    problem in scrolling front layer on change of grid delegate

    i want to change the grid delegate in sliver grid on the click of a button from back layer . Grid delegate does change but custom scrollview does not work on the changed grid delegate

    wontfix 
    opened by ankibhandari 12
  • [BackdropNavigationBackLayer] Customizable InkWell border

    [BackdropNavigationBackLayer] Customizable InkWell border

    Is your feature request related to a problem? Please describe. All BackdropNavigationBackLayer elements are wrapped in InkWell to make them clickable, but this creates a problem: it's impossible to customize the ink splash border, for example, set the border radius. A naive solution is to use ListTile as a list item, but in this case InkWell is the parent of ListTile and implicitly overrides the ink splash, ignoring the ListTile.shape style.

    Describe the solution you'd like Just make the ability to pass ShapeBorder object in the BackdropNavigationBackLayer constructor to set it to InkWell.customBorder property when creating the list.

    Additional context The current implementation is ready, you can see it here https://github.com/proninyaroslav/backdrop/commit/f5da2da8f4ab538f181ba291e36395c1142b81aa

    For example, 4.0 border radius:

    opened by proninyaroslav 11
  • Added callbacks for backdrop events

    Added callbacks for backdrop events

    I find it very useful to know when the front layer expands or collapses. It might come in handy if you want to change or do smt reactively. In my case, I needed to change toolbar title when state of frontLayer changes, so I added this feature.

    opened by vlytvyne 11
  • Proper demo app with multiple use-cases

    Proper demo app with multiple use-cases

    This will be a separate Flutter Project within this project (like: example) named demo. This app would be a like gallery app (https://gallery.flutter.dev) provided by Flutter to demonstrate all material and cupertino widget with code snippet embedded in itself.

    Check the following screenshot from gallery app for Banner widget:

    | mobile | desktop [mobile view] | destop [full view] | |--------|---------|---------| | Screenshot 2020-06-17 at 3 47 39 PM| Screenshot 2020-06-17 at 3 43 44 PM |Screenshot 2020-06-17 at 3 45 41 PM|

    Along with the demo itself it shows other options - info, code (with copy option), documentation, full screen (toggle the widget demo for mobile screen and full screen)

    We should build similar demo flutter application that will be hosted on Github Pages for user to quickly check [#12]. It should demonstrate ideally all use cases of Backdrop as mentioned in MDG.

    The example would just show simplest of the use-case. But in the starting of example.dart we should add link to demo so that users form pub.dev can check the demo easily.

    enhancement help wanted 
    opened by daadu 11
  • Error: The Ticker must be disposed before flutter: calling super.dispose

    Error: The Ticker must be disposed before flutter: calling super.dispose

    Describe the bug I get the following error:

    flutter: The following assertion was thrown while finalizing the widget tree:
    flutter: BackdropScaffoldState#ba6f2(ticker active) was disposed with an active Ticker.
    flutter: BackdropScaffoldState created a Ticker via its SingleTickerProviderStateMixin, but at the time
    flutter: dispose() was called on the mixin, that Ticker was still active. The Ticker must be disposed before
    flutter: calling super.dispose().
    flutter: Tickers used by AnimationControllers should be disposed by calling dispose() on the
    flutter: AnimationController itself. Otherwise, the ticker will leak.
    flutter: The offending ticker was:
    flutter:   Ticker(created by BackdropScaffoldState#ba6f2(lifecycle state: created))
    flutter:   The stack trace when the Ticker was actually created was:
    flutter:   #0      new Ticker.<anonymous closure> (package:flutter/src/scheduler/ticker.dart:67:40)
    flutter:   #1      new Ticker (package:flutter/src/scheduler/ticker.dart:69:6)
    flutter:   #2      SingleTickerProviderStateMixin.createTicker
    flutter:   (package:flutter/src/widgets/ticker_provider.dart:129:15)
    flutter:   #3      new AnimationController (package:flutter/src/animation/animation_controller.dart:247:21)
    flutter:   #4      BackdropScaffoldState.initState (package:backdrop/scaffold.dart:397:9)
    

    When I follow the stacktrace, I get to this point in BackdropScaffoldState

    @override
      void dispose() {
        super.dispose();
        if (_shouldDisposeAnimationController) _animationController.dispose();
      }
    

    If I change that to :

    @override
      void dispose() {
        _animationController.dispose();
        super.dispose();
      }
    

    everything works again.

    I now ask myself why _shouldDisposeAnimationController is false if an AnimationController exists? Also I found this in BackdropScaffoldState's initState

    if (widget.animationController == null && widget.controller == null) {
          _shouldDisposeAnimationController = true;
        }
    

    Since _shouldDisposeAnimationController otherwise defaults to false, _animationController.dispose() is not called every time.
    I think it could just be changed to:

    @override
      void dispose() {
        if(_animationController != null) _animationController.dispose();
        super.dispose();
      }
    



    Smartphone

    • Device: iPhone 12
    • OS: IOS 14.4
    opened by felixwortmann 9
  • Feature/customizable inkwell

    Feature/customizable inkwell

    Makes the InkWell in BackdropNavigationBackLayer customizable:

    • itemPadding: set padding for list items.
    • itemCustomBorder: set custom border for items.
    • itemSplashColor: set custom splash color.

    Closes #59.

    opened by WieFel 9
  • Backdrop scaffoldkey

    Backdrop scaffoldkey

    Included a scaffoldkey incase one needs to access let's say a snackbar or the bottomsheet of the backdrop scaffold to avoid creating multiple scaffolds :)

    opened by kannel-outis 9
  • Custom shape on the front layer

    Custom shape on the front layer

    It would be nice to be able to change the shape of the front layer. I have a design with beveled corners like in Shrine Material theme, but now there is no way to change shape.

    Shrine's customized backdrop

    The front layer of Shrine's backdrop uses a custom cut corner on the top left, giving the backdrop an asymmetrical shape.

    opened by milkyway044 7
  • cannot paste if backdrop is revealed

    cannot paste if backdrop is revealed

    Describe the bug I have an implementation where the backdrop is revealed, and takes up half the screen. I am unable to paste (by long holding and waiting for the paste popup). It does popup like normal, but clicking on the paste button does not preform the past task. Sometimes it seems like it clicks behind the paste button.

    Possible Cause So what I think is happening is that by pushing down the front layer the guesture detection for the paste popup gets pushed down too. This hypothesis is bolstered by the fact that I can reveal the backlayer by 1 pixel and still successfully click the paste button.

    To Reproduce Steps to reproduce the behavior: Maybe this could be reproduced in other projects, I hope its not an artifact of the specific way I've implemented the Backdrop.

    Screenshots works fine when I disable the backdrop reveal image paste button just disappears on click when backdrop revealed image

    Smartphone (please complete the following information):

    • Device: pixel 3
    • OS: android
    • Browser emulator

    Additional context My particular implementation shouldn't cause this but if it matters, you'll see I instantiate the backdrop once and it remains persistent as the user navigates through the app (child being the page widget they are on)

    ...
    class RavenMobileApp extends StatelessWidget {
      
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          navigatorObservers: [components.navigator],
          initialRoute: '/',
          routes: ...
          ...
          builder: (context, child) {
            components.navigator.scaffoldContext = context;
            return BackdropScaffold(
              ...
              appBar: BackdropAppBar(...),
              backLayer: BackLayer(),
              frontLayer: Container(
                color: Colors.white,
                child: child!,        //  <--- front page navigation
              ),
            );
          },
        );
      }
    ...
    
    opened by lastmeta 6
  • How to show back layer without scrim on front?

    How to show back layer without scrim on front?

    Is your feature request related to a problem? Please describe. I have a situation where I want to show some of the back layer, while allowing the user to interact with the front.

    like this: image

    but of course I also want to retain the default behavior for other situations: like when I'm showing navigation options.

    Describe the solution you'd like So I'd like to be able to call a sister function to .revealBackLayer(); or even something like this .revealBackLayer(activeFront: true);

    What I'm looking for How would you go about implementing this? I'd be happy to implement it if you guys are busy, because I want this feature now. But I'd like some pointers or hints as I don't know the code base well. What steps would you go through to implement this?

    opened by lastmeta 5
  • Add a shadow to the front layer

    Add a shadow to the front layer

    Is your feature request related to a problem? Please describe. I want my front layer to cast a shadow on the app bar, and the back layer.

    Describe the solution you'd like

    BackdropScaffold(
      // EXISTING:
      frontLayerElevation: 1,    
      frontLayerBorderRadius: const BorderRadius.only(
        topLeft: Radius.circular(8), 
        topRight: Radius.circular(8),),
      ...
    
      // DESIRED:
      frontLayerBoxShadow: [
        BoxShadow(
          color: Colors.black,
          offset: Offset(0, 1),
          blurRadius: 5),],
    )
    

    Describe alternatives you've considered I attempted a bunch of stuff like this:

    frontLayer: Stack(children: [
                Container(
                    decoration: BoxDecoration(
                        borderRadius: BorderRadius.only(
                            topRight: Radius.circular(8.0),
                            topLeft: Radius.circular(8.0)),
                        color: Colors.transparent,
                        boxShadow: [
                      BoxShadow(
                          //color: const Color(0x33000000),
                          color: Colors.black,
                          offset: Offset(0, 1),
                          blurRadius: 5),
                    ])
                    ),
                child!,
              ]),
    

    However, the shadow was always "inside" the frontLayer, not outside it. image

    opened by lastmeta 0
  • Abstract out

    Abstract out "backdrop core" from `BackdropScaffold`

    Something like BackdropController or BackdropLayout or just Backdrop - that has all the backdrop logic/animation in it. This will make the functionality re-usable with other non-scaffold like scenario - like NavigationRails #17, with Horizontal layout #75 etc. This issue could be pre-requisite for it.

    This will also increase the usability of the package in-general.

    This is in-line with what @willlarche suggested when I posted about the package in flutter-dev group (wayback!).

    opened by daadu 0
Releases(v0.8.0)
  • v0.8.0(May 12, 2022)

  • v0.7.2(May 3, 2022)

    • DOCS: remove mention of deprecated member
    • REFACTOR: making BackdropScaffoldState.scaffoldKey non-null with late (#114)
    • FEAT: added frontLayerShape in-place of frontLayerBorderRadius in BackdropScaffold (#116)
    • perf: only rebuild widgets when BackdropScaffoldState changed (#119)
    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Dec 19, 2021)

  • v0.7.0(Dec 19, 2021)

    • DOCS: added "Awesome Flutter" shield
    • CHORE: migrated to flutter_lints with additional rules (#99)
    • CI: added check for proper PR title based on conventionalcommits.org (#101)
    • STYLE: fix all lint issues (#100)
    • DOCS: added api-doc links to quick links section
    • BREAKING REFACTOR: removed all deprecated members (#102)
    • BREAKING REFACTOR: moved all files to src/ dir (#103)
    • DOCS: remove note for flutter v1 and minor formatting
    • FEAT: synced members of Scaffold and AppBar (#104)
    • DOCS: start doc-comments with a single sentence summary (#105)
    • CI: using flutter analyze and checking correct formatting (#107)
    • FEAT: added double frontLayerElevation member (#109)
    • CI: restructured, cleaned, added pub.dev checks (#108)
    • CHORE: default gitignore for idea added
    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Jun 28, 2021)

    • doc: "all-contributors" generated through CLI
    • doc(readme): minor - using HTML badges instead of MD
    • ci(analysis): upgraded analyzer action to v3
    • doc(readme): GIF for BackdropScaffold example updated
    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(May 4, 2021)

  • v0.6.0(Mar 11, 2021)

  • v0.5.3(Mar 2, 2021)

    • pubspec: set https://fluttercommunity.github.io/backdrop/ as "Home Page"
    • readme: added "Live Demo" to "Quick links"
    • BackdropScaffold: fix bug where _animationController.dispose() is not called correctly [#83]
    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Feb 27, 2021)

    • example: referring "live demo" so that it shows up in pub.dev
    • example: proper sdk constraints and migrated to Flutter Android Embedding v2
    • ci-cd: deploy_demo fix
    • BackdropScaffold: added revealBackLayerAtStart property [#82]
    • BackdropScaffold: renamed controller -> animationController property and state "getter" [#82]
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Feb 23, 2021)

  • v0.5.0(Feb 23, 2021)

    • demo: use gallerize package [#67]
    • demo: auto-deploy with new tag creation with Github Actions [#69]
    • dart: requires Dart >= 2.3 BREAKING [#73]
    • BackdropScaffold: added frontLayerActiveFactor and backLayerScrim; replaced inactiveOverlayColor with frontLayerScrim; [#73]
    • BackdropScaffold: documentation improvement for subHeader, headerHeight and stickyFrontLayer [#73]
    • example: added example for variable height front layer [#73]
    • BackdropScaffold: added reverseAnimationCurve [#74]
    • readme: added "Accessing underlying backdrop functionalities" section [#77]
    Source code(tar.gz)
    Source code(zip)
Owner
Flutter Community
A central place for all community made Flutter packages. To get started, see the README of the 'community' repository.
Flutter Community
Flutter firebase auth - Simple implementation of Firebase Authentication using Flutter

FlutterFire Authentication Sample A simple implementation of Firebase Authentica

Souvik Biswas 4 Apr 2, 2022
Sardor Makhmudov 0 Feb 7, 2022
[Flutter SDK V.2] - Youtube Video is a Flutter application built to demonstrate the use of Modern development tools with best practices implementation like Clean Architecture, Modularization, Dependency Injection, BLoC, etc.

[Flutter SDK V.2] - Youtube Video is a Flutter application built to demonstrate the use of Modern development tools with best practices implementation like Clean Architecture, Modularization, Dependency Injection, BLoC, etc.

R. Rifa Fauzi Komara 17 Jan 2, 2023
DropdownButton, ToggleButton & CheckboxListTile implementation in Flutter as a Mobile App Development exercise.

Sort & Filter UI A new Flutter project. Getting Started This project is a starting point for a Flutter application. โฎ Preview A few resources to get y

Ehmad Saeedโšก 8 Sep 29, 2021
Interview questions and answers for preparation, built in pure flutter also have CI implementation for learning.

toughest An app for interview preparation. Unique animations. More than 100 questions and answer. Good UI. Featured in many websites. For Vietnam user

Md Sadab Wasim 239 Dec 27, 2022
Firebase dart common interface and implementation for Browser, VM, node and flutter

firebase.dart Firebase dart common interface and implementation for Browser, VM, node and flutter Firebase Initialization Usage in browser import 'pac

Tekartik 6 Nov 28, 2021
Two-dimensional recursive spatial subdivision: Flutter implementation of d3-quadtree

d3-quadtree A quadtree recursively partitions two-dimensional space into squares, dividing each square into four equally-sized squares. Each distinct

Tutero 4 Nov 26, 2022
Flutter plugin that provides a quick&dirty workaround for incompatibility between VMWare Airwatch MDM solution and Dart Sockets implementation

airwatch_socket_workaround This plugin has been created to enable flutter apps to reach endpoints that are only reachable using a VMWare airwatch per

Gonรงalo Silva 5 Nov 11, 2022
๐Ÿฆ€๐Ÿฆ€ High performance Crypto library of Rust implementation for Flutter

r_crypto Rust backend support crypto flutter library, much faster than Dart-implementation library, light-weight library. Some crypto support hardware

Tino 28 Dec 17, 2022
An implementation for flutter secure file storage

Flutter secure file storage An implementation for flutter secure file storage. F

icapps 6 Oct 29, 2022
A Flutter implementation of splash screen. Supports Android and IOS.

your_splash A Flutter implementation of splash screen. Supports Android and IOS. Features Supports splash screen with the Future callback Supports spl

Stepanenko Stanislav 6 Sep 27, 2022
ESP-Touch Dart API for Flutter. Platform-specific implementation for Android (Java) and iOS (Objective-C).

esptouch_flutter Flutter plugin for ESP-Touch to configure network for ESP-8266 and ESP-32 devices. Runs on iOS and Android. esptouch_flutter is Flutt

SMAHO Engineering OSS 86 Dec 10, 2022
Implementation of different design challenges in flutter.

my_flutter_ui_challenges Different set of screens implemented using flutter. Home Screen Car Rental App Design concept taken from https://www.uplabs.c

Muhammad Adil 124 Dec 9, 2022
A Flutter implementation of the rough.js library

Rough Rough is a library that allows you draw in a sketchy, hand-drawn-like style. It's a direct port of Rough.js. Installation In the dependencies: s

Sergi Martรญnez 79 Dec 21, 2022
Flutterkotlinlottie - A sample flutter app illustrating the implementation of a lottie splash screen natively through kotlin

flutter_lottie_splash_app A Flutter application to demonstrate how to add an ani

null 0 Jan 1, 2022
Dialog flowtter-master - A Flutter implementation of DialogFlow, improved

A Flutter implementation of DialogFlow, improved. Build your integrations with D

null 0 Jan 3, 2022
Peek & Pop implementation for Flutter based on the iOS functionality of the same name.

peek_and_pop Peek & Pop implementation for Flutter based on the iOS functionality of the same name. Finally, the v1.0.0 release! More fluent, more opt

AliYigitBireroglu 227 Dec 17, 2022
Flutter implementation of WykopMobilny

Wykop Mobilny (Hybird) Flutter port of WykopMobilny Setting up Requirements: For this app you need to install flutter. Setup: Enter /assets/ folder an

Feelfree (Filip) 59 Dec 27, 2022
A Flutter implementation of Google's Dialog Flow improved

A Flutter implementation of DialogFlow, improved. Build your integrations with DialogFlow easier and faster. About the package Dialog Flow on Flutter,

Deimos 36 Oct 31, 2022