| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import 'package:flutter/cupertino.dart';
- class FixedSizeTabIndicator extends Decoration {
- final double width; // Fixed width
- final double height; // Indicator height
- final double radius; // Corner radius
- final Color color; // Indicator color
- const FixedSizeTabIndicator({
- required this.width,
- required this.height,
- required this.radius,
- required this.color,
- });
- @override
- BoxPainter createBoxPainter([VoidCallback? onChanged]) {
- return _CustomPainter(this, onChanged);
- }
- }
- class _CustomPainter extends BoxPainter {
- final FixedSizeTabIndicator decoration;
- _CustomPainter(this.decoration, VoidCallback? onChanged) : super(onChanged);
- @override
- void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
- final Paint paint = Paint();
- paint.color = decoration.color;
- paint.style = PaintingStyle.fill;
- final double xPos =
- offset.dx + (configuration.size!.width / 2) - (decoration.width / 2);
- final double yPos = configuration.size!.height - decoration.height;
- final Rect rect =
- Rect.fromLTWH(xPos, yPos, decoration.width, decoration.height);
- final RRect rRect = RRect.fromRectAndRadius(
- rect, Radius.circular(decoration.radius)); // Rounded corners
- canvas.drawRRect(rRect, paint);
- }
- }
|