An elastic material bottom sheet implementation for Flutter.

Related tags

Bottom Sheets rubber
Overview

Awesome Flutter

An elastic material bottom sheet implementation for Flutter.

This is still an early preview, some behaviors can change or being removed. Every feedback, bug report or feature request is welcome, please send it at the issue tracker

Follow the Quick Start to add it to your project. Is also available the complete example in the repository to preview the library on your device.

Comments
  • RubberBottomSheet isn't working in release builds

    RubberBottomSheet isn't working in release builds

    Great library! For now, it's the only way to implement awesome persistent bottom sheet. But there is an annoying bug.

    Source code of my application: https://github.com/alexandr2levin/my_mikhailovka

    Description of the bug RubberBottomSheet very often expands to full height and can't be collapsed in release builds. Sometimes it works as expected, but it happens very rare. Debug builds works as expected.

    To Reproduce

    1. flutter run --release my project
    2. try to collapse the bottom sheet

    Screenshots

    | Release build (incorrect behavior) | Debug build (correct behavior) | | ------------- | ------------- | | telegram-cloud-file-2-257120505-20070-2437342557360051043| telegram-cloud-file-2-257033876-20696--9013455571151254205 |

    Smartphone:

    • Device: iPhone 5S, Nokia 3.1
    • OS: latest iOS, Android 8.1
    • Version [e.g. 22]
    • Flutter

    Flutter doctor

    [βœ“] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.3 18D109, locale en-RU)
    
    opened by alexandr2levin 10
  • GestureDetector in ListView is not working

    GestureDetector in ListView is not working

    Describe the bug I have a ListView with items similar to the scroll example (which is now working really great by the way πŸ‘). Every item is wrapped in a GestureDetector that is listening for onTap.

    There are currently three problems:

    • The taps are oftentimes not regognized.
    • If onTap is successfully called, the sheet jumps around.
    • There is also sometimes the following message appearing in the console
    flutter: ══║ EXCEPTION CAUGHT BY GESTURE β•žβ•β•β•β•β•β•β•
    flutter: The following assertion was thrown while handling a gesture:
    flutter: 'package:rubber/src/bottom_sheet.dart': Failed assertion: line 149 pos 12: '_hold == null': is not
    flutter: true.
    flutter:
    flutter: Either the assertion indicates an error in the framework itself, or we should provide substantially
    flutter: more information in this error message to help you determine and fix the underlying cause.
    flutter: In either case, please report this assertion by filing a bug on GitHub:
    flutter:   https://github.com/flutter/flutter/issues/new?template=BUG.md
    flutter:
    flutter: When the exception was thrown, this was the stack:
    flutter: #2      _RubberBottomSheetState._onVerticalDragDown (package:rubber/src/bottom_sheet.dart:149:12)
    flutter: #3      DragGestureRecognizer.addPointer.<anonymous closure> (package:flutter/src/gestures/monodrag.dart:123:46)
    flutter: #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
    flutter: #5      DragGestureRecognizer.addPointer (package:flutter/src/gestures/monodrag.dart:123:9)
    flutter: #6      RawGestureDetectorState._handlePointerDown (package:flutter/src/widgets/gesture_detector.dart:643:18)
    flutter: #7      RenderPointerListener.handleEvent (package:flutter/src/rendering/proxy_box.dart:2500:14)
    flutter: #8      _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
    flutter: #9      _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
    flutter: #10     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
    flutter: #11     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
    flutter: #12     _invoke1 (dart:ui/hooks.dart:168:13)
    flutter: #13     _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
    flutter: (elided 2 frames from class _AssertionError)
    flutter:
    flutter: Handler: onDown
    flutter: Recognizer:
    flutter:   VerticalDragGestureRecognizer#d7641(debugOwner: GestureDetector)
    flutter: ═══════
    

    Expected behavior I expect that "normal" interactions like onTap are handled by the widgets inside of the modal.

    opened by JohannesKaufmann 6
  • Using ListView in upperLayer section cancel the drag up action

    Using ListView in upperLayer section cancel the drag up action

    Describe the bug I have a column with multiple rows in my upperLayer section. If I leave at it is, I get a "Bottom overflowed" error.

    Column(
      children: <Widget>[
        Row(
          children: <Widget> [
          ...
          ]),
        Row(
          children: <Widget> [
          ...
          ]),
      ])
    

    Putting the column within a ListView or similar widget remove the overflow, but now, when dragging up the section, it just scroll the ListView:

    ListView(
      children: <Widget> [
        Column(
          children: <Widget>[
            Row(
              children: <Widget> [
              ...
              ]),
            Row(
              children: <Widget> [
              ...
            ]),
          ])
        ])
    ....
    

    Smartphone (please complete the following information):

    • Device: Blackberry Motion
    • OS: Android 8.x
    • Flutter 1.0 and Rubber 0.2.1
    opened by icarus31 5
  • Add onCollapse callback

    Add onCollapse callback

    First of all, congrats, this widget works pretty good. Using it i had the need to execute some tasks after the bottom sheet collapse and i thought this could be useful for someone else too. So i added this optional callback: onCollapse.

    Situations that can be useful If your bottom sheet content has managed data or if you need to update some state on the parent widget, is good to know when the bottom sheet is collapsed.

    opened by lohanbodevan 4
  • Migrate to nullsafety

    Migrate to nullsafety

    Closes #64

    Ran dart migrate, cleaned up a little, and tested with the iOS simulator. I bumped the version to 1.0.0 as per migration guidance, but we might want to make it 1.0.0-nullsafety.1 while people try it out.

    opened by micimize 3
  • make friction properly slow down the drag,

    make friction properly slow down the drag,

    closes #53

    Additionally, adds an AnimationPadding padding argument to the controller to allow for clamping the animation values. I'm honestly not 100% sure if it's the best solution for preventing the "fling off screen" issue, but it works fairly well with a MEDIUM stiffness:

          springDescription: SpringDescription.withDampingRatio(
            mass: 1,
            stiffness: Stiffness.MEDIUM,
            ratio: DampingRatio.LOW_BOUNCY,
          ),
    
    opened by micimize 3
  • implement RubberBottomSheet.of(context)

    implement RubberBottomSheet.of(context)

    Added RubberBottomSheet.of(context). Fixes #42 .

    I implemented this feature similar to Scaffold.of(context). Moreover I made the RubberAnimationController public in order to allow expanding the bottom sheet. In addition to protect the screenHeight I made it private.

    I am looking forward to an answer from you. Thanks in advance!

    opened by The-Redhat 3
  • How to ensure proper widget height when working with percentages?

    How to ensure proper widget height when working with percentages?

    When using a percentage to set the lowerBoundValue and the bottom sheet is collapsed, how can I make sure that the widget on the top of the bottom sheet expands the area properly? This is for example and issue when I switch to landscape mode, as the available size is much smaller then, which is causing overflow issues.

    Thanks!!!

    opened by mochar 3
  • Got Assertion Error when scrolling the Upper layer of bottom sheet

    Got Assertion Error when scrolling the Upper layer of bottom sheet

    Describe the bug When i was scrolling the bottom Sheet , i got the below exception

    To Reproduce Steps to reproduce the behavior:

    1. Random Error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots

    I/flutter (22346): ══║ EXCEPTION CAUGHT BY GESTURE β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• I/flutter (22346): The following assertion was thrown while handling a gesture: I/flutter (22346): 'package:rubber/src/bottom_sheet.dart': Failed assertion: line 158 pos 14: '_drag == null': is not I/flutter (22346): true. I/flutter (22346): I/flutter (22346): Either the assertion indicates an error in the framework itself, or we should provide substantially I/flutter (22346): more information in this error message to help you determine and fix the underlying cause. I/flutter (22346): In either case, please report this assertion by filing a bug on GitHub: I/flutter (22346): https://github.com/flutter/flutter/issues/new?template=BUG.md I/flutter (22346): I/flutter (22346): When the exception was thrown, this was the stack: I/flutter (22346): #2 _RubberBottomSheetState._onVerticalDragDown (package:rubber/src/bottom_sheet.dart:158:14) I/flutter (22346): #3 DragGestureRecognizer.addPointer. (package:flutter/src/gestures/monodrag.dart:123:46) I/flutter (22346): #4 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) I/flutter (22346): #5 DragGestureRecognizer.addPointer (package:flutter/src/gestures/monodrag.dart:123:9) I/flutter (22346): #6 RawGestureDetectorState._handlePointerDown (package:flutter/src/widgets/gesture_detector.dart:698:18) I/flutter (22346): #7 RenderPointerListener.handleEvent (package:flutter/src/rendering/proxy_box.dart:2519:14) I/flutter (22346): #8 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22) I/flutter (22346): #9 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7) I/flutter (22346): #10 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7) I/flutter (22346): #11 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7) I/flutter (22346): #12 _invoke1 (dart:ui/hooks.dart:173:13) I/flutter (22346): #13 _dispatchPointerDataPacket (dart:ui/hooks.dart:127:5) I/flutter (22346): (elided 2 frames from class _AssertionError) I/flutter (22346): I/flutter (22346): Handler: onDown I/flutter (22346): Recognizer: I/flutter (22346): VerticalDragGestureRecognizer#30ccf(debugOwner: GestureDetector) I/flutter (22346): ════════════════════════════════════════════════════════════════════════════════════════════════════ I/flutter (22346): Another exception was thrown: 'package:rubber/src/bottom_sheet.dart': Failed assertion: line 219 pos 14: '_drag == null': is not true.

    Smartphone (please complete the following information):

    • Device: Pixel 2
    • OS: Android
    • Browser: NA
    • Version 0.2.6

    Additional context Add any other context about the problem here.

    opened by kartdroid 3
  • [depends on nullsafety] Friction fix revived

    [depends on nullsafety] Friction fix revived

    closes #53

    This is pretty much the same change as #54, except that:

    • It is carefully merged onto #65
    • I replaced AnimationPadding.none() with AnimationPadding.bottomOnly() because that is actually what the old default behavior was, getting rid of the easy fling offscreen issue
    • I added an example of how to use various padding options
    opened by micimize 2
  • Change Deprecated API ancestorStateOfType

    Change Deprecated API ancestorStateOfType

    Hello,

    A change in the SDK caused my code to break in Flutter 1.26.0-2.0.pre.335. Adding this change in bottom_sheet.dart seemed to help. More information about the depreciated API can be found here.

    Thanks!

    opened by PaulCaroline 2
  • Null-Safe rubber 1.0.1 depends on NON-Null-Safe after_layout 1.0.7

    Null-Safe rubber 1.0.1 depends on NON-Null-Safe after_layout 1.0.7

    Describe the bug dart migrate results in Bad state: Error: package has unmigrated dependencies. due to non-null-safe dependency of rubber 1.0.1.

    To Reproduce Run dart migrate on a project that has a dependency on rubber 1.0.1.

    Expected behavior The "Null-Safe" rubber 1.0.1 should not result in the "has unmigrated dependencies" error.

    To Fix Bump the after_layout dependency from the non-null-safe version 1.0.7 to the null-safe 1.1.0 version.

    opened by paul-appliquette 0
  • Fast fling ignores the first drag events in upperLayer

    Fast fling ignores the first drag events in upperLayer

    If you open the bottom sheet with a quick fling to make it full size, the CustomScrollView is ignored for the first few drags. It only works after about 500ms after that it accepts the drags and the UpperLayer scrolls normally.

    The physics in the CustomScrollView is NeverScrollablePhysics.

    Is there a solution for this?

    opened by b3nni97 0
  • Example app build failed

    Example app build failed

    Describe the bug Failed to build example

    To Reproduce Steps to reproduce the behavior:

    1. clone this repo
    2. cd to example
    3. flutter run
    4. See error

    Smartphone (please complete the following information):

    • Device: Google Pixel 4 XL
    • OS: Android 11

    Additional context Flutter version: 2.0.6

    Stacktrace:

                                                                            
    FAILURE: Build failed with an exception.                                
                                                                            
    * What went wrong:                                                      
    Execution failed for task ':app:processDebugResources'.                 
    > Android resource linking failed                                       
      Output:  /tmp/rubber/example/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:86: error: resource android:attr/fontVariationSettings not found.
      /tmp/rubber/example/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:87: error: resource android:attr/ttcIndex not found.
      error: failed linking references.                                     
                                                                            
      Command: /home/nikto_b/.gradle/caches/transforms-1/files-1.1/aapt2-3.2.1-4818971-linux.jar/2ff17d3944c8c56908a8c6111bdccaa8/aapt2-3.2.1-4818971-linux/aapt2 link -I\
              /data/nikto_b/Android/SDK/platforms/android-27/android.jar\   
              --manifest\                                                   
              /tmp/rubber/example/build/app/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml\
              -o\                                                           
              /tmp/rubber/example/build/app/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_\
              -R\                                                           
              @/tmp/rubber/example/build/app/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt\
              --auto-add-overlay\                                           
              --java\                                                       
              /tmp/rubber/example/build/app/generated/not_namespaced_r_class_sources/debug/processDebugResources/r\
              --custom-package\                                             
              app.mattiacrovero.example\                                    
              -0\                                                           
              apk\                                                          
              --output-text-symbols\                                        
              /tmp/rubber/example/build/app/intermediates/symbols/debug/R.txt\
              --no-version-vectors                                          
      Daemon:  AAPT2 aapt2-3.2.1-4818971-linux Daemon #0                    
      Output:  /home/nikto_b/.gradle/caches/transforms-1/files-1.1/core-1.1.0.aar/bfcc3332caf165a9c90656c3cb3305cd/res/values/values.xml:174:5-210:25: AAPT: error: resource android:attr/fontVariationSettings not found.
                                                                            
      /home/nikto_b/.gradle/caches/transforms-1/files-1.1/core-1.1.0.aar/bfcc3332caf165a9c90656c3cb3305cd/res/values/values.xml:174:5-210:25: AAPT: error: resource android:attr/ttcIndex not found.
                                                                            
      error: failed linking references.                                     
      Command: /home/nikto_b/.gradle/caches/transforms-1/files-1.1/aapt2-3.2.1-4818971-linux.jar/2ff17d3944c8c56908a8c6111bdccaa8/aapt2-3.2.1-4818971-linux/aapt2 link -I\
              /data/nikto_b/Android/SDK/platforms/android-27/android.jar\   
              --manifest\                                                   
              /tmp/rubber/example/build/app/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml\
              -o\                                                           
              /tmp/rubber/example/build/app/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_\
              -R\                                                           
              @/tmp/rubber/example/build/app/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt\
              --auto-add-overlay\                                           
              --java\                                                       
              /tmp/rubber/example/build/app/generated/not_namespaced_r_class_sources/debug/processDebugResources/r\
              --custom-package\                                             
              app.mattiacrovero.example\                                    
              -0\                                                           
              apk\                                                          
              --output-text-symbols\                                        
              /tmp/rubber/example/build/app/intermediates/symbols/debug/R.txt\
              --no-version-vectors                                          
      Daemon:  AAPT2 aapt2-3.2.1-4818971-linux Daemon #0                    
                                                                            
    * Try:                                                                  
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
                                                                            
    * Get more help at https://help.gradle.org                              
                                                                            
    BUILD FAILED in 10m 21s
    
    opened by niktob560 0
  • AnimationController.dispose() called more than once

    AnimationController.dispose() called more than once

    Describe the bug

    Just using the plugin. Here is the widget in context within my app and the error produced whenever build is called.

    return AppScaffold(
              title: 'Book Appointment',
              showAppBar: true,
              showMenu: true,
              showBack: true,
              body: ModalProgressHUD(
                inAsyncCall: state is BookPendingState,
                child: AppBackground(
                  child: SafeArea(
                    bottom: false,
                    child: Theme(
                      data: Theme.of(context).copyWith(
                        unselectedWidgetColor: Colors.white,
                        textTheme: Theme.of(context).textTheme.copyWith(
                          bodyText1: TextStyle(color: Colors.black)
                        )
                      ),
                      child: RubberBottomSheet(
                        animationController: _controller,
                        lowerLayer: getLowerLayer(),
                        headerHeight: 60,
                        header: getHeader(),
                        upperLayer: getUpperLayer()
                        ),
                    ),
                  ),
                ),
              ),
            );
    
    ══║ EXCEPTION CAUGHT BY WIDGETS LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
    The following assertion was thrown while finalizing the widget tree:
    AnimationController.dispose() called more than once.
    A given RubberAnimationController cannot be disposed more than once.
    The following RubberAnimationController object was disposed multiple times:
      RubberAnimationController#6fcbc(⏭ 0.100; paused; DISPOSED)
    
    When the exception was thrown, this was the stack:
    #0      RubberAnimationController.dispose.<anonymous closure> (package:rubber/src/animation_controller.dart:509:9)
    #1      RubberAnimationController.dispose (package:rubber/src/animation_controller.dart:516:6)
    #2      RubberBottomSheetState.dispose (package:rubber/src/bottom_sheet.dart:125:16)
    #3      StatefulElement.unmount (package:flutter/src/widgets/framework.dart:4721:11)
    #4      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2022:13)
    #5      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #6      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #7      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #8      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #9      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #10     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #11     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #13     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #14     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #15     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #16     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #17     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #18     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #19     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #20     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #21     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #22     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #23     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #24     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #25     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #26     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #27     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:5961:14)
    #28     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #29     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #30     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #31     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #32     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #33     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:5961:14)
    #34     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #35     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #36     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #37     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #38     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #39     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4549:14)
    #40     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #41     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:2020:7)
    #42     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6076:16)
    #43     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:2018:13)
    #44     ListIterable.forEach (dart:_internal/iterable.dart:39:13)
    #45     _InactiveElements._unmountAll (package:flutter/src/widgets/framework.dart:2031:25)
    #46     BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2785:27)
    #47     BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2585:15)
    #48     BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:2784:7)
    #49     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:875:19)
    #50     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
    #51     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #52     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9)
    #53     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:998:5)
    #57     _invoke (dart:ui/hooks.dart:161:10)
    #58     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:253:5)
    #59     _drawFrame (dart:ui/hooks.dart:120:31)
    (elided 3 frames from dart:async)
    

    Followed by:

    [VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: Null check operator used on a null value
    #0      RubberAnimationController.stop (package:rubber/src/animation_controller.dart:500:12)
    #1      RubberAnimationController._animateToInternal (package:rubber/src/animation_controller.dart:417:5)
    #2      RubberAnimationController.animateTo (package:rubber/src/animation_controller.dart:356:12)
    #3      RubberAnimationController.expand (package:rubber/src/animation_controller.dart:333:12)
    #4      _BookServicesState.build.<anonymous closure>.<anonymous closure> (package:ellabliss/book/services.dart:567:25)
    #5      State.setState (package:flutter/src/widgets/framework.dart:1267:30)
    #6      _BookServicesState.build.<anonymous closure> (package:ellabliss/book/services.dart:560:11)
    #7      _BookServicesState.build.<anonymous closure> (package:ellabliss/book/services.dart:549:17)
    #8      _BlocConsumerState.build.<anonymous closure> (package:flutter_bloc/src/bloc_consumer.dart:130:26)
    #9      _BlocListenerBaseSta<…>
    

    To Reproduce Steps to reproduce the behavior:

    1. Use within stateful widget
    2. Update the state

    Expected behavior No errors

    Screenshots N/A

    Smartphone (please complete the following information): N/A

    Additional context Doctor summary (to see all details, run flutter doctor -v): [βœ“] Flutter (Channel stable, 2.0.6, on macOS 11.3.1 20E241 darwin-x64, locale en-US) [βœ“] Android toolchain - develop for Android devices (Android SDK version 29.0.2) [βœ“] Xcode - develop for iOS and macOS [βœ“] Chrome - develop for the web [βœ“] Android Studio (version 4.1) [βœ“] IntelliJ IDEA Community Edition (version 2019.2) [βœ“] VS Code (version 1.56.1) [βœ“] Connected device (2 available) β€’ No issues found!

    opened by emaddoma 1
  • Slow animation

    Slow animation

    Describe the bug Hi McRovero, first i want to thank you for this great library, but i'm disappointed how the animation is too slow and luggy. is there something should i do to optimize the animation?

    and thanks.

    To Reproduce Expand/Collapse the bottomsheet

    Expected behavior Smooth and not luggy animation

    Smartphone:

    • Device: Lenovo k6 power and many...
    • OS: Android 8.1
    opened by procodingtools 0
Owner
Mattia Crovero
Mattia Crovero
Flutter | Create advanced modal bottom sheets. Material, Cupertino or your own style

Flutter Modal Bottom Sheet BREAKING CHANGE IN 1.0.0 In the builder param remove scrollController and use ModalScrollController.of(context) instead to

Jaime Blasco 1.5k Jan 8, 2023
Instagram post style button/card made for flutter

Instagram post style button/card made for flutter

Ismael Shakverdiev 14 Dec 23, 2022
Flutter 2.0 (Null safety) Snapping Modal Bottom Sheet made using sliding sheet package. πŸ”–

Snapping Modal Bottom Sheet Developement Stack Getting Started This project is a starting point for a Flutter application. A few resources to get you

Nakshatra Singh 3 Sep 20, 2021
Circular Bottom Navigation Iman KhoshabiCircular Bottom Navigation [368⭐] - Beautiful animated bottom navigation bar by Iman Khoshabi.

Circular Bottom Navigation (or maybe a tab bar). This is implementation of an artwork in Uplabs Donate Support us by becoming a patron on Patreon Let'

Iman khoshabi 523 Dec 30, 2022
Dart/Flutter package for using Elastic App Search through a simple API returning easy to handle objects

Dart/Flutter package for using Elastic App Search through a simple API returning easy to handle objects This package is a ready-to-use API for Elastic

Julien Le Bren 5 Nov 16, 2022
Bottom Sheet Expandable Bar for Flutter

Bottom Sheet Expandable Bar This package create a bottom navigation bar with the capability to show a bottom sheet. Instalation Include bottom_sheet_e

AarΓ³n J. Montes 8 Oct 31, 2022
Flutter: Rating bottom sheet

Rating bottom sheet Features Getting started pubspec.yaml rating: <lastest version> Usage Implement the RatingController class PrintRatingController e

David Araujo 3 Aug 18, 2022
A Splash screen with curved custom bottom sheet and dots indicator within it.

Pub.dev Curved Splash Screen A Splash screen with curved custom bottom sheet and dots indicator within it. You can add your custom splash screens acco

Hosain Mohamed 16 Dec 1, 2022
Custom bottom sheet widget, that can resize by drag and then scroll.

Bottom Sheet This package is part of the SurfGear toolkit made by Surf. About Custom bottom sheet widget that can be resized in response to drag gestu

Surf 92 Dec 16, 2022
A action bottom sheet that adapts to the platform (Android/iOS).

Adaptive action sheet A action bottom sheet that adapts to the platform (Android/iOS). iOS Android Getting Started Add the package to your pubspec.yam

Daniel Ioannou 26 Sep 26, 2022
Show beautiful bottom sheet as confirmation dialog quickly and easily.

sweetsheet Show beautiful bottom sheet as confirmation dialog quickly and easily. nice warning success danger and since version 0.2.0 , it is fully cu

Ayao Corneille ALLOGBALO 80 Sep 27, 2022
A sheet that aligns to the bottom of a widget and expands as scroll up.

slinky_view A sheet that aligns to the bottom of a widget and expands as scroll up. Getting started Add dependency. dependencies: slinky_view: ^1.0.

idonun 3 Nov 21, 2022
Flutter-nav-bottom-bar-tutorial - A flutter bottom navigation bar tutorial

Flutter Bottom Navigation Bar Tutorial A tutorial with various Flutter bottom na

Aleyna Eser 2 Oct 25, 2022
Custom bottom bar - A bottom tool bar that can be swiped left or right to expose more tools.

custom_bottom_bar A bottom tool bar that can be swiped left or right to expose more tools. usage Create your custom bottom bars with up to four custom

null 4 Jan 26, 2020
Flutter | Create advanced modal bottom sheets. Material, Cupertino or your own style

Flutter Modal Bottom Sheet BREAKING CHANGE IN 1.0.0 In the builder param remove scrollController and use ModalScrollController.of(context) instead to

Jaime Blasco 1.5k Jan 8, 2023
A Flutter plugin that exposes Monet (Material You, Material 3) system colors on Android 12.

Monet Colors A Flutter plugin that exposes Monet (Material You, Material 3) system colors on Android 12. Returns null on unsupported platforms and lea

İhsan Işık 3 Aug 26, 2022
A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app

A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app

Joshua 301 Jan 3, 2023
A Very Flexible Widget that can Implement Material Sheets on all Directions, both modal and persistent, and consequently a Material Navigation Drawer

Flutter_MaterialSheetAndNavigationDrawer If this project helped you reduce developement time or you just want to help me continue making useful tools

Bryan Cancel 30 Dec 4, 2021
Material io ext - A collection of extensions for creating widgets following material.io guidelines

material_io_ext It is a collection of extensions for creating widgets following

null 3 Jan 28, 2022
Material io ext - A collection of extensions for creating widgets following material.io guidelines

material_io_ext It is a collection of extensions for creating widgets following

BetterX.io 3 Jan 28, 2022