Introduction
Creating a responsive user interface is crucial for delivering a seamless experience across various devices and screen sizes. In Flutter, achieving a responsive UI involves considering different layout techniques and adapting to the diverse range of devices your users might have. In this tutorial, we’ll explore three distinct approaches to make your Flutter UI responsive.

Table of Contents
- Introduction
- Approach 1: MediaQuery and LayoutBuilder
- Approach 2: Responsive Widgets with LayoutBuilder
- Approach 3: ScreenType and DevicePreview Packages
- Conclusion
Why Does Responsive Design Matter?
Creating a responsive UI is not just about aesthetics; it directly impacts user satisfaction and engagement. Users expect applications to seamlessly transition between devices without compromising functionality or design. By embracing responsive design principles in Flutter, you ensure that your app remains accessible and user-friendly across diverse platforms.
What have we learned?
In this tutorial, we explored three distinct approaches to make your Flutter UI responsive:

- MediaQuery and LayoutBuilder: Leveraging the MediaQuery class to obtain screen size information and dynamically adjusting the UI with LayoutBuilder.
- Responsive Widgets with LayoutBuilder: Utilizing LayoutBuilder to create widgets that adapt to available space by responding to constraints.
- ScreenType and DevicePreview Packages: Employing the screen_type and device_preview packages for handling different screen types and previewing apps on various devices directly within Flutter.
Approach 1: MediaQuery and LayoutBuilder
One of the fundamental methods for achieving responsiveness in Flutter is by using MediaQuery
and LayoutBuilder
. These classes allow you to obtain information about the device’s screen size and adjust your UI accordingly.
What Is MediaQuery in Flutter?
In the realm of Flutter development, MediaQuery
is a powerful utility that provides information about the underlying device’s screen characteristics. Essentially, it acts as a window into the device’s display properties, offering developers a means to tailor their application’s layout and design based on the available screen real estate.
Step 1: Import Required Packages:
Initial step is to import all the necessary packages you need to make your project
import 'package:flutter/material.dart';
Step 2: Use MediaQuery:
Now, we will create a variable and use the MediaQuery to check for the screen size width and store it in that variable.
double screenWidth = MediaQuery.of(context).size.width;
Step 3: Adapt UI Based on Screen Size
In this step we compare the screen size with different numbers and make the layout for those sizes, you may check for as many screen sizes depending upon on how many platforms you’re planning to publish your flutter app on
if (screenWidth > 600) {
// Implement tablet or landscape layout
} else {
// Implement mobile or portrait layout
}
Approach 2: Responsive Widgets with LayoutBuilder
Flutter’s LayoutBuilder
widget is another powerful tool for responsive design. It provides constraints that allow you to create widgets that dynamically adapt to the available space.
Step1: Add The Layout Builder Widget
LayoutBuilder(
builder: (context, constraints) {
// Access constraints.maxWidth and constraints.maxHeight
// Adjust UI components based on constraints
return YourResponsiveWidget();
},
);
Step 2: Use Constraints to Adjust UI:
Using the constraints to check for different sizes according to your needs.
if (constraints.maxWidth > 600) {
// Implement tablet or landscape layout
} else {
// Implement mobile or portrait layout
}
Approach 3: ScreenType and DevicePreview Packages
The screen_type
and device_preview
packages provide convenient methods for handling different screen types and previewing your app on various devices directly within the Flutter framework.
Step 1: Adding Dependencies
Go in the config.yaml file and in the dependencies section add these lines to install the dependencies.
dependencies:
screen_type: ^3.1.0
device_preview: ^0.7.4
Step 2: Initialize DevicePreview
Now, we have to wrap the app with DevicePreview.
import 'package:device_preview/device_preview.dart';
void main() => runApp(
DevicePreview(
builder: (context) => MyApp(), // Wrap your app with DevicePreview
),
);
Step 3: Use ScreenType Widget
ScreenTypeLayout(
mobile: YourMobileLayout(),
tablet: YourTabletLayout(),
desktop: YourDesktopLayout(),
);
Learn More About Responsive UI Here
Conclusion
These three approaches offer flexibility when it comes to designing responsive Flutter UIs. Choose the method that aligns with your project’s requirements and complexity. Combining these approaches can also provide a comprehensive solution for handling responsiveness in your Flutter applications.
In the ever-evolving landscape of mobile and web development, crafting a responsive user interface is not just a feature; it’s a necessity. Flutter, with its flexible architecture, equips developers with various tools to ensure their applications adapt seamlessly to different screen sizes and orientations.