Dynamically adjust font size in Flutter

app store

In Flutter, fixed font sizes can compromise display quality across varied screen sizes and text lengths.

Here are three effective ways to dynamically adjust font size:

1. AutoSizeText Widget

AutoSizeText widget allows text to resize within available space, adjusting to different screen sizes. It offers the option to set minimum and maximum font sizes and handle text overflow.

Usage example:

AutoSizeText(
  'Sample text',
  minFontSize: 12,
  maxFontSize: 20,
  overflow: TextOverflow.ellipsis,
)

2. FittedBox Widget:

FittedBox scales text to fit container boundaries while preserving the aspect ratio. This widget is especially useful for responsive designs.

Usage example:

FittedBox(
  fit: BoxFit.scaleDown,
  child: Text(
    'Sample text',
    style: TextStyle(fontSize: 16),
  ),
)

Add fast and reliable scanning functionalities to your app!
With Scanbot SDK, you can easily add barcode and document scanning to your app or website. Get your free 7-day trial license now – no signup required!

3. LayoutBuilder Widget:

LayoutBuilder allows widgets to adapt to the constraints of parent widgets, modifying font size to match available space. When no parent widget is defined, the device screen serves as the parent, adjusting font size to screen size.

Mobile applications typically have screen sizes 480 pixels wide or less, while iPads or tablets range from 481 to 960 pixels. Web or desktop platforms generally exceed 960 pixels in width.

Usage example:

LayoutBuilder(
  builder: (context, constraints) {
    final width = constraints.maxWidth;
    var fontSize = 16.0;
    if (width <= 480) {
      fontSize = 16.0;
    } else if (width > 480 && width <= 960) {
      fontSize = 22.0;
    } else {
      fontSize = 28.0;
    }
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text(
            'Sample responsive text',
            textAlign: TextAlign.center,
            style: TextStyle(fontSize: fontSize),
          ),
        ],
      ),
    );
  },
)

In this example, font sizes are assigned based on screen width, making the text display responsive to the device’s screen width.

While implementing LayoutBuilder may require more initial consideration, its capacity to create fully responsive designs is worthwhile, ensuring a consistent user experience across devices.

Developers, ready to get started?

Adding our free trial to your app is easy. Download the Scanbot SDK now and discover the power of mobile data capture