jamesblasco/modal_bottom_sheet
61.9
Adequate · 19 September 2026
11k
lines of production code
Dart
primary language
1
measurement over time
What this system is
This system is a Flutter library that provides draggable, resizable bottom sheet components and modal routing infrastructure. It supports Material Design, Cupertino (iOS), and custom bar-style sheets, offering configurable physics, scroll handling, and navigation transitions. The package includes comprehensive examples and tests to demonstrate various sheet behaviors and integration patterns.
Features
Add Cupertino modal sheet route with native iOS styling
Introduces the \CupertinoSheetRoute\ class, enabling modal sheets that mimic the native iOS appearance. This route applies rounded top corners, appropriate safe-area padding, and a scaling animation to the underlying page when presented. It supports configurable drag behavior via the \draggable\ property and uses snapping physics to stop at defined positions.
sheet/lib/src/route/cupertino · high confidence
Added Android example app scaffolding and coverage tooling
The example application now includes the necessary Android project structure, including AndroidManifest files, MainActivity, and theme resources, enabling the app to run on Android devices. Additionally, a new coverage.sh script has been added to the tools directory to automate code coverage reporting and validation.
_modal\_bottom\sheet/example/android, tools · high confidence
Added interactive sheet configuration demo in the example app
The example application now includes a new editor module under \sheet/example/lib/editor\ that allows users to interactively configure and preview sheet behavior. This addition introduces a \SheetConfigurationPage\ and \FilterEditor\ UI, powered by a new \SheetConfigurationController\ and \SheetChild\ widget definitions, enabling real-time adjustment of properties such as min/max extent, bounce, fit, and child content type within the demo environment.
sheet/example/lib/editor · high confidence
Added navigation examples for Sheet and CupertinoSheet pages
The example app now includes four new navigation demos in the route/navigation directory: page.dart demonstrates the standard SheetPage with a custom barrier color, cupertino\_page.dart shows the CupertinoSheetPage for iOS-style navigation, go\_router.dart provides a basic GoRouter integration using CupertinoSheetPage, and go\_router\_advanced.dart illustrates advanced GoRouter patterns including ShellRoute nesting and nested navigation within a sheet context.
sheet/example/lib/examples/route/navigation · high confidence
Expanded sheet example gallery with new interaction demos
The sheet example application now includes a broader set of demonstration files covering various sheet behaviors and configurations. New examples include bouncing physics (with and without viewport overflow), clamped extents, resizable sheets, fit modes, floating sheets, and snap behaviors. The collection also features a complex map-integrated sheet with dynamic app bar styling, a foldable screen example using DisplayFeatureSubScreen, and specific use cases like scrollable sheets with text fields. These additions provide users with more reference implementations for configuring Sheet physics, controllers, and layout constraints.
sheet/example/lib/examples/sheet · high confidence
Initial release of Sheet widget library with resizing and Material styling
This change introduces the core widgets for the Sheet library, enabling users to create draggable, resizable bottom sheets with Material Design styling. It adds DefaultSheetController for managing sheet state, MaterialSheet for applying theme-based backgrounds and elevation, and ResizableSheetChild to allow sheet content to expand beyond its initial size. Additional utilities include MinInteractionZone for extended drag areas, SheetMediaQuery for dynamic safe-area padding based on sheet position, and StatusBarGestureDetector to support scroll-to-top interactions via the status bar.
sheet/lib/src/widgets · high confidence
Initial release of the modal\_bottom\_sheet package
This change introduces the modal\_bottom\_sheet library, providing a set of widgets and helper functions to display modal bottom sheets in Flutter applications. It includes implementations for Material Design, Cupertino (iOS), and a customizable 'Bar' style sheet, along with a \MaterialWithModalsPageRoute\ to handle navigation transitions correctly when modals are involved. The package exposes convenience methods like \showMaterialModalBottomSheet\, \showCupertinoModalBottomSheet\, and \showBarModalBottomSheet\, and manages internal details such as scroll controllers, animation curves, and system UI overlay styles.
_modal\_bottom\sheet/lib · high confidence
Introduce draggable bottom sheet with custom physics and scroll handling
This change adds the core implementation for a draggable bottom sheet component, including custom scroll physics (SheetPhysics) that define drag behavior and boundary conditions, a dedicated scroll controller (SheetPrimaryScrollController) and position (SheetPrimaryScrollPosition) to manage the interaction between sheet dragging and internal content scrolling, and a custom scrollable widget (SheetScrollable) that handles gesture recognition and hit testing. The main Sheet widget exposes properties for initial, minimum, and maximum extents, resizable behavior, and physics configuration, allowing users to create bottom sheets that can be dragged, resized, and scrolled independently.
sheet/lib/src · high confidence
Introduce sheet package with public API exports
The sheet library now exposes its core functionality through two new entry-point files: sheet.dart and route.dart. The sheet.dart file aggregates exports for physics, scroll controllers, scrollable components, the main sheet widget, the default sheet controller, and sheet media query. The route.dart file exports base route extensions, Cupertino sheet route specifics (hiding internal transition details), delegated transitions, and the standard sheet route. This establishes the public API surface for the sheet package.
sheet/lib · high confidence
Introduce sheet routing infrastructure with delegated transitions
This change adds the core routing classes for the sheet library, including \SheetRoute\, \MaterialExtendedPageRoute\, and \CupertinoExtendedPageRoute\, along with a \DelegatedTransitionsRoute\ mixin. The \DelegatedTransitionsRoute\ allows the top route to define how the bottom route animates when pushed or popped, enabling coordinated sheet transitions. \SheetRoute\ provides a modal route that overlays a widget and animates it from the bottom, supporting features like draggable sheets, stops, and custom decoration builders. The extended page routes integrate with this system to ensure proper transition handling for Material and Cupertino apps.
sheet/lib/src/route · high confidence
New example app structure with navigation and sheet demonstrations
The example application has been restructured to include a main entry point with GoRouter integration and a bottom navigation bar that switches between sheet and route examples. A new base scaffold provides a consistent layout for displaying sheets, while dedicated pages now showcase various sheet configurations (such as sizing, drag physics, and scrolling behaviors) and route-based modals (including Material, Cupertino, and custom styles). This change introduces a navigable demo interface for users to explore the library's capabilities.
sheet/example/lib · high confidence
New route example demos for modal and sheet navigation
The example app now includes a comprehensive set of new route examples demonstrating various modal and sheet navigation patterns. These include a Cupertino-style share sheet with stop-based scrolling, complex modals with nested navigation and scroll controllers, fit-sized modals, and modals utilizing PopScope to intercept back gestures with confirmation dialogs. Additional examples cover nested scroll views within modals, page views, and simple scrollable modals, providing developers with ready-to-use templates for implementing advanced sheet and modal behaviors.
sheet/example/lib/examples/route/examples · high confidence
Sheet example app scaffolded with new modal route variants
The sheet/example location now includes a complete Flutter project scaffold (Android, iOS, macOS, and web configurations) and introduces several new example routes for the sheet component. Specifically, it adds \AvatarSheetRoute\, \BarSheetRoute\, \DialogSheetRoute\, \FloatingSheetRoute\, and \MaterialSheetRoute\ under \lib/examples/route/modals/\, providing users with pre-built implementations for avatar-styled, bar-controlled, dialog-style, floating, and standard Material-style sheet modals.
sheet/example · high confidence
Behavioural changes
Example app regenerated for Flutter 3.7 with updated platform configurations
The example application has been regenerated to align with Flutter 3.7, introducing several platform-specific updates. On iOS, the minimum deployment target is now set to 12.0, and the project uses Xcode 15.1 tooling with CocoaPods integration. The Android build environment has been updated to use Gradle 7.6.1. Additionally, the Dart code analysis options now include the \recommended\ lint set, and the example code itself has been refreshed to demonstrate current modal bottom sheet patterns, including a new Cupertino-style photo share example and various modal styles.
_modal\_bottom\sheet/example · high confidence
Flutter 3.19 migration and PopScope integration
The modal\_bottom\_sheet package has been updated to support Flutter 3.19, which includes renaming the internal route class from ModalBottomSheetRoute to ModalSheetRoute to avoid conflicts with Flutter's new class of the same name. Additionally, the package now uses PopScope instead of the deprecated WillPopScope to handle back-navigation prevention, ensuring compatibility with modern Flutter standards.
_modal\_bottom\sheet · high confidence
Test coverage
Added tests for sheet routing components; Added unit and widget tests for the Sheet package; Added widget tests for Sheet behavior and controllers; Added widget tests for modal bottom sheet lifecycle and transitions.
Dependencies
Update example projects and packages to Flutter 3.3+ and lints 4.0
The example projects for \modal\_bottom\_sheet\ and \sheet\ have been updated to require the Dart SDK 3.3.0 or higher, aligning with the main packages. The \modal\_bottom\_sheet\ example now includes the \url\_launcher\ dependency, while the \sheet\ example adds \go\_router\, \provider\, \equatable\, and \collection\. Development tooling has been upgraded to \lints\ version 4.0.0 in the main packages and 3.0.0 in the examples, and the \sheet\ package has bumped its \mocktail\ dependency to 1.0.4.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 62.
Lenses
- Code Health 96
- Architecture 94
- Maturity 48
- Readiness 62
- Security 72
- Domain Modelling 100
Changes since last survey
- 252 commits — 187 feature/other, 65 fixes
By area
- lib/src — 61 commits
- (root) — 60 commits
- (repo) — 49 commits
- example/lib — 19 commits
- sheet/lib — 14 commits
- sheet/example — 11 commits
- modal_bottom_sheet/lib — 9 commits
- .github/workflows — 7 commits
- example/ios — 3 commits
- example/web — 2 commits
- sheet/pubspec.lock — 2 commits
- sheet/test — 2 commits
- test/bottom_sheet_test.dart — 2 commits
- .devcontainer/devcontainer.json — 1 commit
- .github/dependabot.yaml — 1 commit
- example/android — 1 commit
- example/assets — 1 commit
- example/macos — 1 commit
- modal_bottom_sheet/CHANGELOG.md — 1 commit
- modal_bottom_sheet/example — 1 commit
Notable commits
- fix: 1. fix: android edge to edge 2. clean: dart analysis
- fix: :bug: (Annotated region) (#352)
- fix: Fix "ScrollController not attached to any scroll views" issue
- fix: Fix PageView horizontal scroll Add PageView Sample
- fix: Fix analysis warnings
- fix: Fix iOS project
- fix: Fix scroll handling for physics that not overflow as ClampingScrollPhysics
- fix: Fix service worker
- fix: Fix shape bug in bar_bottom_sheet
- fix: Fix the system UI overlay style in the CupertinoModalBottomSheetRoute (#434)
- fix: Fix update Sheet content while initializing (#432)
- fix: Format and fix analyzer hints
- fix: Format and fix lint issues.
- fix: Initial route fix (#379)
- fix: Merge pull request #105 from noordawod/bugfix/theme-of
- fix: Merge pull request #250 from jamesblasco/fix/will_pop_close
- fix: Revert web folder changes
- fix: Rudimentary fix for devicePixelRatio (#365)
- fix: VelocityTracker() has a fix with positional arguments
- fix: [sheet] fixed for Flutter 3.16 (#381)
- …and 232 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jamesblasco/modal_bottom_sheet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4f2bbf33f9e5a13fbcd91aa53b2a878d85ab6010 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.