Files
intaleq_driver/lib/views/widgets/circle_container.dart

78 lines
2.1 KiB
Dart
Executable File

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:sefer_driver/constant/colors.dart';
import 'mydialoug.dart';
class MyCircleContainer extends StatelessWidget {
final Widget child;
final Color? backgroundColor;
final Color? borderColor;
MyCircleContainer({
super.key,
required this.child,
this.backgroundColor,
this.borderColor,
});
final controller = Get.put(CircleController());
@override
Widget build(BuildContext context) {
final effectiveBorderColor = borderColor ?? AppColor.borderColor;
return GetBuilder<CircleController>(
builder: ((controller) {
final effectiveBackgroundColor = backgroundColor ??
(controller.isActive ? AppColor.accentColor : AppColor.secondaryColor);
return GestureDetector(
onTap: () {
controller.toggleActive();
MyDialog().getDialog(
'Rejected Orders Count'.tr,
'This is the total number of rejected orders per day after accepting the orders'
.tr, () {
Get.back();
});
},
child: AnimatedContainer(
onEnd: () {
controller.resetSize();
},
duration: const Duration(milliseconds: 300),
width: controller.size,
height: controller.size,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: effectiveBackgroundColor,
border: Border.all(
color: effectiveBorderColor,
width: 1,
),
),
child: Center(child: child),
),
);
}));
}
}
class CircleController extends GetxController {
bool isActive = false;
double size = 40;
void toggleActive() {
isActive = !isActive;
size = 60;
update();
}
void resetSize() {
size = 40;
update();
}
}