class RoundedTabBar extends StatefulWidget {
final List<Widget> tabs;
final int selectedIndex;
final ValueChanged<int> onTap;
final Color indicatorColor;
class _RoundedTabBarPainter extends CustomPainter {
final List<Widget> tabs;
final int selectedIndex;
final Color indicatorColor;
final TabController controller;
final tabRects = <Rect>[];
for (int i = 0; i < tabs.length; i++) {
final RenderBox renderBox = tabs as Tab; // Assuming tabs are of type Tab
final tabOffset = renderBox.localToGlobal(Offset.zero);
final tabRect = Rect.fromLTWH(tabOffset.dx, tabOffset.dy, renderBox.size.width, renderBox.size.height);
tabRects.add(tabRect);
}
// Draw rounded ends for first and last tab
final firstTabPath = Path()
..moveTo(tabRects[0].center.left, tabRects[0].top)
..lineTo(tabRects[0].left, tabRects[0].top)
..arcToPoint(Offset(tabRects[0].left, tabRects[0].bottom), radius: Radius.circular(25))
..lineTo(tabRects[1].left, tabRects[1].bottom);
// Draw straight line in the middle
final middlePath = Path()
..moveTo(tabRects[1].right, tabRects[1].top)
..lineTo(tabRects[tabs.length - 2].left, tabRects[tabs.length - 2].top);