Loading...
Loading...
Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.
npx skill4agent add flutter/skills flutter-build-responsive-layoutMediaQuery.sizeOf(context)LayoutBuilderconstraints.maxWidthMediaQuery.orientationOfOrientationBuilderExpandedFlexibleRowColumnFlexExpandedFlexiblefit: FlexFit.tightflexFlexibleflexGridViewListViewConstrainedBoxContainermaxWidthBoxConstraintsListView.builderGridView.builderDisplay APIMediaQueryMediaQueryBoxConstraintsLayoutBuilderconstraints.maxWidthlargeScreenMinWidth = 600maxWidth > largeScreenMinWidthRowmaxWidth <= largeScreenMinWidthColumnListViewListView.builderGridView.builderSliverGridDelegateWithMaxCrossAxisExtentConstrainedBoxBoxConstraints(maxWidth: [optimal_width])ConstrainedBoxConstrainedBoxCentermaxWidthimport 'package:flutter/material.dart';
const double largeScreenMinWidth = 600.0;
class AdaptiveLayout extends StatelessWidget {
const AdaptiveLayout({super.key});
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);
}
}import 'package:flutter/material.dart';
class ConstrainedContent extends StatelessWidget {
const ConstrainedContent({super.key});
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'),
);
},
),
),
),
);
}
}