import 'package:flutter/material.dart'; class FeatureToggleRow extends StatefulWidget { final String title; final String subtitle; final bool value; final bool hasRefreshing; final bool isRefreshing; final ValueChanged? onChanged; final VoidCallback? onRefresh; final String? refreshTooltip; const FeatureToggleRow({ super.key, required this.title, required this.subtitle, required this.value, this.hasRefreshing = false, this.isRefreshing = false, this.onChanged, this.onRefresh, this.refreshTooltip, }); @override State createState() => _FeatureToggleRow(); } class _FeatureToggleRow extends State { @override Widget build(BuildContext context) { return Row( children: [ Expanded( child: SwitchListTile( title: Text(widget.title), subtitle: Text(widget.subtitle), value: widget.value, onChanged: widget.onChanged, contentPadding: EdgeInsets.zero, ), ), if (widget.hasRefreshing) IconButton( icon: widget.isRefreshing ? const SizedBox( width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2), ) : const Icon(Icons.refresh, size: 20), onPressed: widget.isRefreshing ? null : widget.onRefresh, tooltip: widget.refreshTooltip, visualDensity: VisualDensity.compact, ), ], ); } }