Buttons play a crucial role in every UI, and the standard rectangular shape can sometimes feel outdated. In this post, you’ll learn how to create an ElevatedButton with rounded corners.
It’s simple, with a few different ways to achieve the effect. Available since Flutter 1.22, ElevatedButton replaces the older RaisedButton.
So, let’s jump right in!
Contents
Flutter ElevatedButton With Rounded Corners

Let’s start with a simple one. we will change the style of ElevatedButton using style property.
- We can use ElevatedButton.styleFrom() and provide RoundedRectangleBorder as shape property value.
- BorderRadius.circular(value) creates rounded corner in each side.
ElevatedButton(
onPressed: () {},
child: const Text('Rounded Elevated Button'),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
ElevatedButton With Rounded Corners – StadiumBorder shape

I am already discussed about StadiumBorder in detail.
- Using StadiumBorder, we can easily make stadium shaped Button.
- Inside ElevatedButton.styleFrom(), Use shape property and give StadiumBorder() as value.
- That’s enough, you can change color using primary property.
ElevatedButton(
onPressed: () {},
child: const Text('Elevated Button - Stadium Border Shape'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: StadiumBorder(),
),
),
Rounded ElevatedButton With Container

- In this example, I have increased ElevatedButton width using Container
- You can also increase or decrease height using height property.
Container(
width: 350,
child: ElevatedButton(
onPressed: () {},
child: const Text('Elevated Button'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: const StadiumBorder(),
),
),
),
Flutter ElevatedButton.icon With Rounded Corner
![]()
Here, we can make a rounded Elevatedbutton with icon. Just use ElevatedButton.icon() with your needed icon.
ElevatedButton.icon(
onPressed: () {},
icon: const Icon(Icons.access_alarm_rounded),
label: const Text("Alarm"),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
ElevatedButton.icon with Container
![]()
Just like above example, we will use ElevatedButton.icon with Container just for additional width.
Container(
width: 350,
child: ElevatedButton.icon(
icon: Icon(Icons.alarm),
onPressed: () {},
label: const Text('Elevated Button'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: const StadiumBorder(),
),
),
),
Using ClipRRect For Rounded Corners

As a final one, you can use ClipRRect with ElevatedButton. It gets rounded rectangle around the elevatedbutton.
ClipRRect(
borderRadius: BorderRadius.circular(15),
child: ElevatedButton(
onPressed: () {},
child: const Text('elevated button'),
),
),
ClipRRect with ElevatedButton.icon
![]()
based on the above demo, ElevatedButton.icon will covered with rounded rectangle.
ClipRRect(
borderRadius: BorderRadius.circular(15),
child: ElevatedButton.icon(
icon: Icon(Icons.alarm),
onPressed: () {},
label: Text('elevated button'),
),
),
Complete source code is given below.

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Flutter ElevatedButton With Rounded Corners'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {},
child: const Text('Rounded Elevated Button'),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
SizedBox(
height: 10,
),
//stadiumborder
ElevatedButton(
onPressed: () {},
child: const Text('Elevated Button - Stadium Border Shape'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: const StadiumBorder(),
),
),
SizedBox(
height: 10,
),
//stadiumborder with container
Container(
width: 350,
child: ElevatedButton(
onPressed: () {},
child: const Text('Elevated Button'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: const StadiumBorder(),
),
),
),
SizedBox(
height: 10,
),
//rounded elevatedbutton with icon
ElevatedButton.icon(
onPressed: () {},
icon: const Icon(Icons.access_alarm_rounded),
label: const Text("Alarm"),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
SizedBox(
height: 10,
),
//stadium border with container + elevated icon
Container(
width: 350,
child: ElevatedButton.icon(
icon: Icon(Icons.alarm),
onPressed: () {},
label: const Text('Elevated Button'),
style: ElevatedButton.styleFrom(
primary: Colors.red,
shape: const StadiumBorder(),
),
),
),
SizedBox(
height: 10,
),
//cliprrect with elevatedbutton
ClipRRect(
borderRadius: BorderRadius.circular(35),
child: ElevatedButton(
onPressed: () {},
child: const Text('elevated button'),
),
),
SizedBox(
height: 10,
),
//cliprrect with elevatedbutton.icon
ClipRRect(
borderRadius: BorderRadius.circular(35),
child: ElevatedButton.icon(
icon: Icon(Icons.alarm),
onPressed: () {},
label: Text('elevated button'),
),
),
],
),
),
),
);
}
}
That’s all for now.
If you like this post, please share it with your family and friends.
Thanks.