i made this code:
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: 40.0,
width: MediaQuery.of(context).size.width / 2 - 20,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(15.0),
topRight: Radius.circular(15.0),
),
),
),
Container(
height: 80.0,
width: MediaQuery.of(context).size.width - 40,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(15.0),
bottomRight: Radius.circular(15.0),
topRight: Radius.circular(15.0),
),
),
),
],
),
],
),
That is the result of the code:
How can I put a border, around the red shape?
I tried adding the code inside a container and putting a Border.all() but of course it doesn't work
I hope I have been clear, Thank you :)
One way could be to stack two of the same shapes on top of each other with one of them smaller than the other. Something like this:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Center(
child: Padding(
padding: const EdgeInsets.all(18.0),
child: Stack(
children: [
Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: 40.0,
width: MediaQuery.of(context).size.width / 2 - 20,
decoration: const BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(15.0),
topRight: Radius.circular(15.0),
),
),
),
Container(
height: 80.0,
width: MediaQuery.of(context).size.width - 40,
decoration: const BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(15.0),
bottomRight: Radius.circular(15.0),
topRight: Radius.circular(15.0),
),
),
),
],
),
Padding(
padding: const EdgeInsets.all(2.0),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: 40.0,
width: MediaQuery.of(context).size.width / 2 - 24,
decoration: const BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(13.0),
topRight: Radius.circular(13.0),
),
),
),
Container(
height: 76.0,
width: MediaQuery.of(context).size.width - 44,
decoration: const BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(13.0),
bottomRight: Radius.circular(13.0),
topRight: Radius.circular(13.0),
),
),
),
],
),
),
],
),
),
),
),
);
}
Result:
But it's not the ideal solution. And I see it actually then shows a black line between the containers depending on the screen size. There's actually also a small line visible in your screenshot.
Ideally you don't want to have it split in two containers. I'm guessing some custom Paint should be able to do it but I'm not that familiar with it.