Files
2026-02-21 21:55:20 +03:00

58 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:pweb/models/state/visibility.dart';
class BalanceRefreshButton extends StatelessWidget {
final bool isBusy;
final bool enabled;
final VoidCallback onPressed;
final VisibilityState iconOnly;
final String label;
final String tooltip;
final double iconSize;
const BalanceRefreshButton({
super.key,
required this.isBusy,
required this.enabled,
required this.onPressed,
required this.iconOnly,
required this.label,
required this.tooltip,
this.iconSize = 18,
});
@override
Widget build(BuildContext context) {
final canPress = enabled && !isBusy;
if (iconOnly == VisibilityState.hidden) {
return IconButton(
tooltip: tooltip,
onPressed: canPress ? onPressed : null,
icon: isBusy
? SizedBox(
width: iconSize,
height: iconSize,
child: const CircularProgressIndicator(strokeWidth: 2),
)
: const Icon(Icons.refresh),
);
}
return TextButton.icon(
onPressed: canPress ? onPressed : null,
icon: isBusy
? SizedBox(
width: iconSize,
height: iconSize,
child: const CircularProgressIndicator(strokeWidth: 2),
)
: const Icon(Icons.refresh),
label: Text(label),
style: TextButton.styleFrom(visualDensity: VisualDensity.compact),
);
}
}