top of page

Rounded Corner Containers in Flutter - BoxDecoration in Flutter

Updated: Dec 3, 2022

BoxDecoration provides a lot of features for Containers. Shadows, rounded corners, amazing animated backgrounds are some of them. In this tutorial, we are going to learn how to create rounded corners of containers in Flutter.

Contents

  • Decoration of Container

  • Border Radius

  • Example

  • Result



Decoration of Container

The Container widget in Flutter has a field known as decoration. We can apply a Decoration type of an Object such as BoxDecoration, ShapeDecoration or Custom decoration. Here

Container(
  ...
  decoration: ...
),

With the help of decoration, we can create many anythings from the Container widget. In this tutorial, we will learn to create Rounded corners.

Border Radius

If anyone has learnt web development, they will easily relate the feature to create rounded div containers. Here in Flutter also, we can create rounded corners with the help of the borderRadius field. See the following image to understand.

For the border-radius feature, we need to use the decoration field and then apply the borderRadius. We can do it following two decorations:

  • ShapeDecoration

  • BoxDecoration

We are going to use BoxDecoration because we can apply the colour also in BoxDecoration.



Example

First, create a Container widget with equal width and height as follows:

Container(
  width: 200,
  height: 200,
  ...
),

Then apply the BoxDecoration to the decoration field. Apply the colour of your choice and then pass the borderRadius value.

Container(
  ...
  decoration: BoxDecoration(
    color: Colors.red,
    borderRadius: BorderRadius.circular(radius),
  ),
),

The borderRadius takes a BorderRadius type of value so we have used BorderRadius.circular() for rounded corners. Here radius is any double value. So we have created a double variable called the radius.

double radius = 0.0;

Then we have created a Slider widget to adjust the BorderRadius so that we can see the change.

Slider(
  value: radius,
  onChanged: (value) {
    setState(() {
      radius = value;
    });
  },
  min: 0,
  max: 100,
  label: radius.toStringAsPrecision(2),
),

The Slider and the Container are rapped inside the Column widget.

Column(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  children: [
    Slider(
      ...
    ),
    Container(
      ...
    ),
  ],
),



Result

Here we can see that we are sliding the Slider and the border radius is increasing until the Container becomes a circle. This is because we set the radius to 100 and the side length of the Container is 200. So the diameter of Box Radius becomes 200. Hence the Container is a circle.

Here is the full code if you need it.



class RoundedCorners extends StatefulWidget {
  const RoundedCorners({Key? key}) : super(key: key);

  @override
  _RoundedCornersState createState() => _RoundedCornersState();
}

class _RoundedCornersState extends State<RoundedCorners> {
  double radius = 0.0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Rounded Corners Container")),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          Slider(
            value: radius,
            onChanged: (value) {
              setState(() {
                radius = value;
              });
            },
            min: 0,
            max: 100,
            label: radius.toStringAsPrecision(2),
          ),
          Container(
            width: 200,
            height: 200,
            decoration: BoxDecoration(
              color: Colors.red,
              borderRadius: BorderRadius.circular(radius),
            ),
          ),
        ],
      ),
    );
  }
}


Related Posts

See All

The image sharing apps, shopping apps, etc. have image zoom functionality required to see the image in detail. Today, we will learn to implement the same with the help of a widget, InteractiveViewer.

bottom of page