
Flutter Build Responsive Layout
- 24.5k installs
- 2.7k repo stars
- Updated July 28, 2026
- flutter/skills
Flutter Build Responsive Layout is an official Flutter skill for creating layouts that adapt to different screen sizes using LayoutBuilder and MediaQuery.
About
An official Flutter team skill for building responsive layouts that adapt to different screen sizes. Uses LayoutBuilder, MediaQuery, Expanded, and Flexible widgets to create layouts that work seamlessly on mobile, tablet, and desktop platforms.
- LayoutBuilder and MediaQuery for responsive design
- Expanded and Flexible widgets for adaptive layouts
- Optimizes for mobile, tablet, and desktop form factors
Flutter Build Responsive Layout by the numbers
- 24,478 all-time installs (skills.sh)
- +715 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #7 of 1,048 Mobile Development skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
flutter-build-responsive-layout capabilities & compatibility
- Capabilities
- responsive layout · adaptive ui · widget composition
- Platforms
- macOS · Linux · Windows
What flutter-build-responsive-layout says it does
Use when you need the UI to look good on both mobile and tablet/desktop form factors
npx skills add https://github.com/flutter/skills --skill flutter-build-responsive-layoutAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 24.5k |
|---|---|
| repo stars | ★ 2.7k |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | flutter/skills ↗ |
How do you build responsive Flutter layouts?
An official Flutter team skill for building responsive layouts that adapt to different screen sizes. Uses LayoutBuilder, MediaQuery, Expanded, and Flexible widgets to create layouts that work seamles
Who is it for?
Flutter developers shipping one codebase across phones, tablets, and desktop who need constraint-based responsive layouts.
Skip if: Web-only CSS responsive design or native SwiftUI/UIKit projects without a Flutter codebase.
When should I use this skill?
User needs Flutter UI that adapts to different screen sizes, orientations, or tablet/desktop form factors.
What you get
Adaptive Flutter widget trees with breakpoint-aware layouts for mobile, tablet, and desktop form factors.
- responsive Flutter widget trees
- breakpoint-aware screen layouts
Files
Implementing Adaptive Layouts
Contents
- Space Measurement Guidelines
- Widget Sizing and Constraints
- Device and Orientation Behaviors
- Workflow: Constructing an Adaptive Layout
- Workflow: Optimizing for Large Screens
- Examples
Space Measurement Guidelines
Determine the available space accurately to ensure layouts adapt to the app window, not just the physical device.
- Use `MediaQuery.sizeOf(context)` to get the size of the entire app window.
- Use `LayoutBuilder` to make layout decisions based on the parent widget's allocated space. Evaluate
constraints.maxWidthto determine the appropriate widget tree to return. - Do not use `MediaQuery.orientationOf` or `OrientationBuilder` near the top of the widget tree to switch layouts. Device orientation does not accurately reflect the available app window space.
- Do not check for hardware types (e.g., "phone" vs. "tablet"). Flutter apps run in resizable windows, multi-window modes, and picture-in-picture. Base all layout decisions strictly on available window space.
Widget Sizing and Constraints
Understand and apply Flutter's core layout rule: Constraints go down. Sizes go up. Parent sets position.
- Distribute Space: Use
ExpandedandFlexiblewithinRow,Column, orFlexwidgets. - Use
Expandedto force a child to fill all remaining available space (equivalent toFlexiblewithfit: FlexFit.tightand aflexfactor of 1.0). - Use
Flexibleto allow a child to size itself up to a specific limit while still expanding/contracting. Use theflexfactor to define the ratio of space consumption among siblings. - Constrain Width: Prevent widgets from consuming all horizontal space on large screens. Wrap widgets like
GridVieworListViewin aConstrainedBoxorContainerand define amaxWidthin theBoxConstraints. - Lazy Rendering: Always use
ListView.builderorGridView.builderwhen rendering lists with an unknown or large number of items.
Device and Orientation Behaviors
Ensure the app behaves correctly across all device form factors and input methods.
- Do not lock screen orientation. Locking orientation causes severe layout issues on foldable devices, often resulting in letterboxing (the app centered with black borders). Android large format tiers require both portrait and landscape support.
- Fallback for Locked Orientation: If business requirements strictly mandate a locked orientation, use the
Display APIto retrieve physical screen dimensions instead ofMediaQuery.MediaQueryfails to receive the larger window size in compatibility modes. - Support Multiple Inputs: Implement support for basic mice, trackpads, and keyboard shortcuts. Ensure touch targets are appropriately sized and keyboard navigation is accessible.
Workflow: Constructing an Adaptive Layout
Follow this workflow to implement a layout that adapts to the available BoxConstraints.
Task Progress:
- [ ] Identify the target widget that requires adaptive behavior.
- [ ] Wrap the widget tree in a
LayoutBuilder. - [ ] Extract the
constraints.maxWidthfrom the builder callback. - [ ] Define an adaptive breakpoint (e.g.,
largeScreenMinWidth = 600). - [ ] If `maxWidth > largeScreenMinWidth`: Return a large-screen layout (e.g., a
Rowplacing a navigation sidebar and content area side-by-side). - [ ] If `maxWidth <= largeScreenMinWidth`: Return a small-screen layout (e.g., a
Columnor standard navigation-style approach). - [ ] Run validator -> resize the application window -> review layout transitions -> fix overflow errors.
Workflow: Optimizing for Large Screens
Follow this workflow to prevent UI elements from stretching unnaturally on large displays.
Task Progress:
- [ ] Identify full-width components (e.g.,
ListView, text blocks, forms). - [ ] If optimizing a list: Convert
ListView.buildertoGridView.builderusingSliverGridDelegateWithMaxCrossAxisExtentto automatically adjust column counts based on window size. - [ ] If optimizing a form or text block: Wrap the component in a
ConstrainedBox. - [ ] Apply
BoxConstraints(maxWidth: [optimal_width])to theConstrainedBox. - [ ] Wrap the
ConstrainedBoxin aCenterwidget to keep the constrained content centered on large screens. - [ ] Run validator -> test on desktop/tablet target -> review horizontal stretching -> adjust
maxWidthor grid extents.
Examples
Adaptive Layout using LayoutBuilder
Demonstrates switching between a mobile and desktop layout based on available width.
import 'package:flutter/material.dart';
const double largeScreenMinWidth = 600.0;
class AdaptiveLayout extends StatelessWidget {
const AdaptiveLayout({super.key});
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth > largeScreenMinWidth) {
return _buildLargeScreenLayout();
} else {
return _buildSmallScreenLayout();
}
},
);
}
Widget _buildLargeScreenLayout() {
return Row(
children: [
const SizedBox(width: 250, child: Placeholder(color: Colors.blue)),
const VerticalDivider(width: 1),
Expanded(child: const Placeholder(color: Colors.green)),
],
);
}
Widget _buildSmallScreenLayout() {
return const Placeholder(color: Colors.green);
}
}Constraining Width on Large Screens
Demonstrates preventing a widget from consuming all horizontal space.
import 'package:flutter/material.dart';
class ConstrainedContent extends StatelessWidget {
const ConstrainedContent({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ConstrainedBox(
constraints: const BoxConstraints(
maxWidth: 800.0, // Maximum width for readability
),
child: ListView.builder(
itemCount: 50,
itemBuilder: (context, index) {
return ListTile(
title: Text('Item $index'),
);
},
),
),
),
);
}
}Related skills
How it compares
Pick flutter-build-responsive-layout over generic Flutter tutorials when you need constraint-based multi-form-factor patterns, not fixed-size phone-only screens.
FAQ
Which Flutter widgets does flutter-build-responsive-layout use?
flutter-build-responsive-layout relies on LayoutBuilder, MediaQuery, Expanded, and Flexible to measure constraints and adapt layouts. These widgets replace fixed pixel sizes with space-aware sizing for phones, tablets, and desktop.
When should I use flutter-build-responsive-layout?
Use flutter-build-responsive-layout when a Flutter app must look good on both mobile and tablet or desktop form factors. The skill provides measurement guidelines and a workflow for constructing adaptive screen layouts.
Is Flutter Build Responsive Layout safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.