import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; class StatusAndRefreshButton extends StatelessWidget { final ValueListenable valueListenable; final Future Function() refreshFunction; final Color? busyColor; final Color? buttonColor; const StatusAndRefreshButton({ super.key, required this.valueListenable, required this.refreshFunction, this.buttonColor, this.busyColor, }); @override Widget build(BuildContext context) { return ValueListenableBuilder( valueListenable: valueListenable, builder: (context2, executing, _) { if (executing) { final theme = Theme.of(context); final size = theme.appBarTheme.actionsIconTheme?.size ?? theme.iconTheme.size ?? 24; return Center( child: SizedBox( width: size, height: size, child: CircularProgressIndicator( color: busyColor, ), ), ); } return IconButton( onPressed: refreshFunction, icon: Icon( Icons.refresh, color: buttonColor, )); }); } }