mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
65 lines
1.9 KiB
Dart
65 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:syncrow_web/utils/color_manager.dart';
|
|
|
|
class ConditionToggle extends StatelessWidget {
|
|
final String? currentCondition;
|
|
final void Function(String condition) onChanged;
|
|
|
|
const ConditionToggle({
|
|
required this.onChanged,
|
|
this.currentCondition,
|
|
super.key,
|
|
});
|
|
|
|
static const _conditions = ["<", "==", ">"];
|
|
static const _icons = [
|
|
Icons.chevron_left,
|
|
Icons.drag_handle,
|
|
Icons.chevron_right
|
|
];
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final selectedIndex = _conditions.indexOf(currentCondition ?? "==");
|
|
|
|
return Container(
|
|
height: 30,
|
|
width: MediaQuery.of(context).size.width * 0.1,
|
|
decoration: BoxDecoration(
|
|
color: ColorsManager.softGray.withOpacity(0.5),
|
|
borderRadius: BorderRadius.circular(50),
|
|
),
|
|
clipBehavior: Clip.antiAlias,
|
|
child: Row(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: List.generate(_conditions.length, (index) {
|
|
final isSelected = index == selectedIndex;
|
|
return Expanded(
|
|
child: InkWell(
|
|
onTap: () => onChanged(_conditions[index]),
|
|
child: AnimatedContainer(
|
|
duration: const Duration(milliseconds: 180),
|
|
curve: Curves.ease,
|
|
decoration: BoxDecoration(
|
|
color:
|
|
isSelected ? ColorsManager.vividBlue : Colors.transparent,
|
|
),
|
|
child: Center(
|
|
child: Icon(
|
|
_icons[index],
|
|
size: 20,
|
|
color: isSelected
|
|
? ColorsManager.whiteColors
|
|
: ColorsManager.blackColor,
|
|
weight: isSelected ? 700 : 500,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}),
|
|
),
|
|
);
|
|
}
|
|
}
|