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.






















GestureDetector widgets used to detect gestures, so it provides number of sensing properties. But here we will use the onTap property.









