Skip to content
CAI
Software that uses CAICheck a score

jamesblasco/modal_bottom_sheet

61.9

Adequate · 19 September 2026

11k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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

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.