developed

This commit is contained in:
komekh 2024-08-30 16:23:43 +05:00
parent b946ef0f59
commit ff837e4f6e
5 changed files with 91 additions and 8 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

View File

@ -2,12 +2,11 @@ import 'dart:async';
import 'package:another_stepper/another_stepper.dart'; import 'package:another_stepper/another_stepper.dart';
import 'package:cargo/core/constants/colors.dart'; import 'package:cargo/core/constants/colors.dart';
import 'package:collection/collection.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:collection/collection.dart';
import '../../core/constants/assets.dart';
import '../../core/errors/failures.dart'; import '../../core/errors/failures.dart';
import '../../domain/entities/route/route.dart'; import '../../domain/entities/route/route.dart';
import '../../domain/usecases/order/get_routes_usecase.dart'; import '../../domain/usecases/order/get_routes_usecase.dart';
@ -74,12 +73,15 @@ class OrderDetailBloc extends Bloc<OrderDetailEvent, OrderDetailState> {
), ),
), ),
iconWidget: isSplashedIcon iconWidget: isSplashedIcon
? Image.asset( ? CircleWithGapWidget(
AppAssets.circle, radius: 7,
color: iconColor, fillColor: iconColor,
borderColor: iconColor,
borderWidth: 2,
gap: 3.0,
) )
: CirclePainterWidget( : CirclePainterWidget(
radius: 8, radius: 9,
color: iconColor, color: iconColor,
), ),
); );

View File

@ -10,8 +10,6 @@ sealed class AppAssets {
static const String boxesPng = 'assets/images/boxes.png'; static const String boxesPng = 'assets/images/boxes.png';
static const String trucksPng = 'assets/images/trucks.png'; static const String trucksPng = 'assets/images/trucks.png';
static const String header = 'assets/images/header.png'; static const String header = 'assets/images/header.png';
static const String circle = 'assets/images/circle.png';
static const String circle2 = 'assets/images/circle2.png';
static const String search = 'assets/images/search.png'; static const String search = 'assets/images/search.png';
static const String searchGif = 'assets/images/search.gif'; static const String searchGif = 'assets/images/search.gif';
} }

View File

@ -42,3 +42,86 @@ class CirclePainterWidget extends StatelessWidget {
); );
} }
} }
class CircleWithGapPainter extends CustomPainter {
final double radius;
final Color fillColor;
final Color borderColor;
final double borderWidth;
final double gap;
CircleWithGapPainter({
required this.radius,
required this.fillColor,
required this.borderColor,
required this.borderWidth,
required this.gap,
});
@override
void paint(Canvas canvas, Size size) {
// Paint for the inner circle
final fillPaint = Paint()
..color = fillColor
..style = PaintingStyle.fill;
// Paint for the border
final borderPaint = Paint()
..color = borderColor
..style = PaintingStyle.stroke
..strokeWidth = borderWidth;
// Draw the filled inner circle
canvas.drawCircle(
Offset(size.width / 2, size.height / 2),
radius,
fillPaint,
);
// Draw the border circle with the gap
canvas.drawCircle(
Offset(size.width / 2, size.height / 2),
radius + gap + borderWidth / 2,
borderPaint,
);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) {
return false;
}
}
class CircleWithGapWidget extends StatelessWidget {
final double radius;
final Color fillColor;
final Color borderColor;
final double borderWidth;
final double gap;
const CircleWithGapWidget({
super.key,
required this.radius,
required this.fillColor,
required this.borderColor,
required this.borderWidth,
required this.gap,
});
@override
Widget build(BuildContext context) {
// Ensure the widget is large enough to fit the circle with its border and gap
double totalSize = (radius + gap + borderWidth) * 2;
return CustomPaint(
painter: CircleWithGapPainter(
radius: radius,
fillColor: fillColor,
borderColor: borderColor,
borderWidth: borderWidth,
gap: gap,
),
size: Size(totalSize, totalSize),
);
}
}