flutter_breakpoints 1.0.0
flutter_breakpoints: ^1.0.0 copied to clipboard
A Flutter package for responsive design using customizable breakpoints.
Flutter Breakpoints #
Flutter Breakpoints is a flexible package designed to help you manage responsive layouts in Flutter applications by defining specific breakpoints for different screen sizes.
Table of Contents #
Demonstrations #
Below are GIFs demonstrating how the flutter_breakpoints
package adapts layouts across different screen sizes. This visual representation helps illustrate the package's responsive design capabilities.
Installation #
Add the flutter_breakpoints
dependency to your pubspec.yaml
file:
dependencies:
flutter_breakpoints: ^1.0.0
Getting Started #
Basic Setup #
First, wrap your application with the FlutterBreakpointProvider
in the MaterialApp
:
import 'package:flutter/material.dart';
import 'package:flutter_breakpoints/flutter_breakpoints.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Breakpoints',
builder: (context, child) => FlutterBreakpointProvider.builder( // 👋
context: context, //
child: child, //
), //
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: const ResponsivePage(),
);
}
}
Implementing Responsive Layouts #
Inside your pages or widgets, utilize the Breakpoints
class to adjust the layout according to the device width:
class ResponsivePage extends StatelessWidget {
const ResponsivePage({super.key});
@override
Widget build(BuildContext context) {
final isMobile = Breakpoints.mobile.isBreakpoint(context); // 👋
final isTablet = Breakpoints.tablet.isBreakpoint(context); //
final isDesktop = Breakpoints.desktop.isBreakpoint(context); //
if (isMobile) {
return buildMobileLayout();
} else if (isTablet) {
return buildTabletLayout();
} else if (isDesktop) {
return buildDesktopLayout();
}
return const SizedBox.shrink();
}
Widget buildMobileLayout() => Center(child: Text('Mobile Layout'));
Widget buildTabletLayout() => Center(child: Text('Tablet Layout'));
Widget buildDesktopLayout() => Center(child: Text('Desktop Layout'));
}
Customizing Breakpoints #
To customize breakpoints, define custom breakpoints in a separate class called MyBreakpoints
. Here's how you can do it:
class MyBreakpoints {
MyBreakpoints._();
static FlutterBreakpoint smallPhone = const FlutterBreakpoint(name: 'smallPhone', minWidth: 0);
static FlutterBreakpoint largePhone = const FlutterBreakpoint(name: 'largePhone', minWidth: 400);
static FlutterBreakpoint smallTablet = const FlutterBreakpoint(name: 'smallTablet', minWidth: 700);
static FlutterBreakpoint largeTablet = const FlutterBreakpoint(name: 'largeTablet', minWidth: 900);
static List<FlutterBreakpoint> get breakpoints => [
smallPhone,
largePhone,
smallTablet,
largeTablet,
];
}
Using Custom Breakpoints in Your Application #
Use your custom breakpoints in the FlutterBreakpointProvider
:
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Breakpoints',
builder: (context, child) => FlutterBreakpointProvider.builder( //
context: context, //
child: child, //
breakpoints: MyBreakpoints.breakpoints, // 👋 custom
),
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: const CustomResponsivePage(),
);
}
}
class CustomResponsivePage extends StatelessWidget {
const CustomResponsivePage({super.key});
@override
Widget build(BuildContext context) {
final isSmallPhone = MyBreakpoints.smallPhone.isBreakpoint(context); // 👋 custom
final isLargePhone = MyBreakpoints.largePhone.isBreakpoint(context); //
final isSmallTablet = MyBreakpoints.smallTablet.isBreakpoint(context);//
final isLargeTablet = MyBreakpoints.largeTablet.isBreakpoint(context);//
if (isSmallPhone) {
return Center(child: Text('Small Phone Layout'));
} else if (isLargePhone) {
return Center(child: Text('Large Phone Layout'));
} else if (isSmallTablet) {
return Center(child: Text('Small Tablet Layout'));
} else if (isLargeTablet) {
return Center(child: Text('Large Tablet Layout'));
}
return const SizedBox.shrink();
}
}
Examples #
For a comprehensive demonstration of how to implement and customize breakpoints using the flutter_breakpoints
package, please refer to the example available in the Example tab. This detailed example showcases the package's usage and demonstrates how to effectively handle different screen sizes.