| 123456789101112131415161718192021222324252627282930313233 |
- import 'package:flutter/material.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- class TabCustomGradientIndicator extends Decoration {
- @override
- BoxPainter createBoxPainter([VoidCallback? onChanged]) {
- return _TabCustomGradientIndicatorPainter();
- }
- }
- class _TabCustomGradientIndicatorPainter extends BoxPainter {
- @override
- void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
- final double indicatorWidth = 16.0.w;
- final double indicatorHeight = 4.0.h;
- final double dx =
- offset.dx + (configuration.size!.width - indicatorWidth) / 2;
- final double dy =
- offset.dy + configuration.size!.height - indicatorHeight - 2;
- final Rect rect = Rect.fromLTWH(dx, dy, indicatorWidth, indicatorHeight);
- final RRect rRect = RRect.fromRectAndRadius(rect, Radius.circular(4));
- final Paint paint =
- Paint()
- ..shader = LinearGradient(
- begin: Alignment(0.04, 0.21),
- end: Alignment(0.98, 0.76),
- colors: [Color(0xFF7D46FC), Color(0xFFBC87FF)],
- ).createShader(rect);
- canvas.drawRRect(rRect, paint);
- }
- }
|