I want to make different shape of a container in flutter. For example, shaping the container to have a shape of octagonal, etc.
Thank you in advance.
I want to make different shape of a container in flutter. For example, shaping the container to have a shape of octagonal, etc.
Thank you in advance.
You can extend CustomClipper
and define a custom path to be used with ClipPath
. There are other pre-made clip widgets like ClipOval
and ClipRRect
(a rectangle with rounded corners). The below is an example of a star-shaped Container
.
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ClipPath(
child: Container(
color: Colors.amber,
),
clipper: _MyClipper(),
),
);
}
}
class _MyClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final path = Path();
path.lineTo(size.width * 0.5, size.height * 0.15);
path.lineTo(size.width * 0.35, size.height * 0.4);
path.lineTo(0.0, size.height * 0.4);
path.lineTo(size.width * 0.25, size.height * 0.55);
path.lineTo(size.width * 0.1, size.height * 0.8);
path.lineTo(size.width * 0.5, size.height * 0.65);
path.lineTo(size.width * 0.9, size.height * 0.8);
path.lineTo(size.width * 0.75, size.height * 0.55);
path.lineTo(size.width, size.height * 0.4);
path.lineTo(size.width * 0.65, size.height * 0.4);
path.lineTo(size.width * 0.5, size.height * 0.15);
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}