Files
syncrow-web/lib/pages/spaces_management/widgets/counter_widget.dart
2024-11-20 20:10:39 +04:00

84 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:syncrow_web/utils/color_manager.dart';
class CounterWidget extends StatefulWidget {
final int initialCount;
final ValueChanged<int> onCountChanged;
const CounterWidget({
Key? key,
this.initialCount = 0,
required this.onCountChanged,
}) : super(key: key);
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
late int _counter = 0;
@override
void initState() {
super.initState();
_counter = widget.initialCount;
}
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration(
color: ColorsManager.counterBackgroundColor, // Background color for the counter
borderRadius: BorderRadius.circular(20), // Rounded corners
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Decrement button
GestureDetector(
onTap: () {
setState(() {
if (_counter > 0) {
_counter--;
widget.onCountChanged(_counter);
}
});
},
child: const Icon(
Icons.remove,
color: ColorsManager.spaceColor, // Blue color
size: 18, // Icon size
),
),
const SizedBox(width: 8),
// Counter value display
Text(
'$_counter',
style: const TextStyle(
color: ColorsManager.spaceColor, // Blue color
fontSize: 16,
),
),
const SizedBox(width: 8),
// Increment button
GestureDetector(
onTap: () {
setState(() {
_counter++;
widget.onCountChanged(_counter);
});
},
child: const Icon(
Icons.add,
color: ColorsManager.spaceColor, // Blue color
size: 18, // Icon size
),
),
],
),
);
}
}