Expanded Widget

Introduction of Expanded Widget

In Flutter, the Expanded Widget is used to allocate additional space to its child within a Flex parent, typically a Column or Row. It enables the child widget to expand and occupy the available space along the main axis of the parent. The Expanded widget has a few properties that can be customized.

Usage in a Column or Row:

In this example, the Container wrapped with Expanded will take up all the available vertical space between “Widget 1” and “Widget 2” in the Column.

Column(
  children: [
    Text('Widget 1'),
    Expanded(
      child: Container(
        color: Colors.blue,
      ),
    ),
    Text('Widget 2'),
  ],
),

Flexible Space Allocation:

This Widget flexes to occupy any remaining space after non-flexible widgets have been laid out. If there are multiple Widgets in a Row or Column, they share the available space based on their flex factor.

Row(
  children: [
    Container(
      width: 50,
      height: 50,
      color: Colors.red,
    ),
    Expanded(
      flex: 2,
      child: Container(
        color: Colors.blue,
      ),
    ),
    Expanded(
      flex: 1,
      child: Container(
        color: Colors.green,
      ),
    ),
  ],
),

In this example, the second Container will take twice as much horizontal space as the third one due to the flex factors.

Inside a Flex Parent

The Expanded widget is commonly used inside a Flex parent (like Column or Row) to distribute available space among its children.

Row(
  children: [
    Container(
      width: 50,
      height: 50,
      color: Colors.red,
    ),
    Expanded(
      child: Container(
        color: Colors.blue,
      ),
    ),
    Container(
      width: 50,
      height: 50,
      color: Colors.green,
    ),
  ],
),

Final Code: This is the final code with the combination of some above expanded widget properties.

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: Container(
              color: Colors.deepPurple,
            ),
          ),
          Expanded(
            child: Container(
              color: Colors.teal,
            ),
          ),
          Expanded(
            child: Container(
              color: Colors.orangeAccent,
            ),
          ),
        ],
      ),
    );
  }
}

The Expanded widget is a powerful tool for creating flexible and responsive layouts in Flutter, allowing developers to control how space is distributed among different widgets within a parent.

Thank for visiting Hybrid App Development
Posted by Hussam HM

Premium Partner

WordPress Wallah offer's premium WordPress themes, plugins, and Template Kits free.

Details