breakpoint 1.3.0 copy "breakpoint: ^1.3.0" to clipboard
breakpoint: ^1.3.0 copied to clipboard

A Flutter plugin to calculate the material design breakpoints.

Breakpoint #

Calculates the responsive layout grid properties (columns, gutters, and margins) based on the current screen size, following Material Design Guidelines.


Features #

  • Standardized Breakpoints: Implements the Material Design responsive layout grid system.
  • Adaptive Properties: providing the correct columns count, glutters spacing, and margin width for any screen width.
  • Device Classification: Identifies device types (Handset, Tablet, Desktop) and window sizes (xsmall to xlarge).
  • Flexible Usage: Works with both BoxConstraints (via LayoutBuilder) and MediaQuery.

Installation #

flutter pub add breakpoint

Usage #

Using BreakpointBuilder #

The easiest way to use this package is with BreakpointBuilder. It automatically handles the LayoutBuilder for you and provides the current Breakpoint data.

BreakpointBuilder(
  builder: (context, breakpoint) {
    // The breakpoint passed here provides the standardized margins,
    // columns, and gutters for the current screen size.

    return Container(
      // Access the margin, commonly 16.0 or 24.0
      padding: EdgeInsets.all(breakpoint.margin), 
      child: GridView.builder(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: breakpoint.columns, // 4, 8, or 12 columns
          crossAxisSpacing: breakpoint.gutters, // 16.0 or 24.0 spacing
          mainAxisSpacing: breakpoint.gutters,
        ),
        // ...
      ),
    );
  },
)

Manual Calculation #

If you are already inside a LayoutBuilder or want to use MediaQuery:

From Constraints (Recommended for sub-views):

LayoutBuilder(builder: (context, constraints) {
  // Calculate the breakpoint based on the current widget's constraints
  final breakpoint = Breakpoint.fromConstraints(constraints);
  
  return Padding(
    padding: EdgeInsets.symmetric(horizontal: breakpoint.margin),
    child: Row(
      children: [
        // Your adaptive layout here
      ],
    ),
  );
});

From MediaQuery (App-wide layout):

// Calculate based on the full screen size
final breakpoint = Breakpoint.fromMediaQuery(context);

// Example: accessing device type
if (breakpoint.device == LayoutClass.desktop) {
  return DesktopLayout();
} else if (breakpoint.device == LayoutClass.tablet) {
  return TabletLayout();
} else {
  return MobileLayout();
}

Breakpoint System #

This package maps screen widths to the standard Material Design responsive grid:

Screen Width Device Window Columns Gutters Margins
0 - 359 Small Handset xsmall 4 16dp 16dp
360 - 399 Medium Handset xsmall 4 16dp 16dp
400 - 479 Large Handset xsmall 4 16dp 16dp
480 - 599 Large Handset xsmall 4 16dp 16dp
600 - 719 Small Tablet small 8 16dp 16dp
720 - 839 Large Tablet small 8 24dp 24dp
840 - 959 Large Tablet small 12 24dp 24dp
960 - 1023 Large Tablet small 12 24dp 24dp
1024 - 1279 Desktop medium 12 24dp 24dp
1280 - 1439 Desktop medium 12 24dp 24dp
1440 - 1599 Desktop large 12 24dp 24dp
1600 - 1919 Desktop large 12 24dp 24dp
1920+ Desktop xlarge 12 24dp 24dp

Note: In Landscape orientation, the effective width calculation includes a buffer (+120dp) to better align with landscape layout expectations.

Example #

Check out the example directory for a full Material 3 adaptive dashboard application.

100
likes
160
points
260
downloads

Publisher

verified publisherrodydavis.com

Weekly Downloads

A Flutter plugin to calculate the material design breakpoints.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on breakpoint