import 'package:async_tools/async_tools.dart'; import 'package:awesome_extensions/awesome_extensions_flutter.dart'; import 'package:flutter/material.dart'; import '../views.dart'; const _kStyledCheckboxChanged = 'kStyledCheckboxChanged'; class StyledCheckbox extends StatelessWidget { const StyledCheckbox( {required bool value, required String label, String? decoratorLabel, Future Function(bool)? onChanged, super.key}) : _value = value, _onChanged = onChanged, _label = label, _decoratorLabel = decoratorLabel; @override Widget build(BuildContext context) { final theme = Theme.of(context); final textTheme = theme.textTheme; var textStyle = textTheme.labelLarge!; if (_onChanged == null) { textStyle = textStyle.copyWith(color: textStyle.color!.withAlpha(127)); } Widget ctrl = Row(children: [ Transform.scale( scale: 1.scaled(context), child: Checkbox( value: _value, onChanged: _onChanged == null ? null : (value) { if (value == null) { return; } singleFuture((this, _kStyledCheckboxChanged), () async { await _onChanged(value); }); })), Text(_label, style: textStyle).paddingAll(4.scaled(context)), ]); if (_decoratorLabel != null) { ctrl = ctrl .paddingLTRB(4.scaled(context), 4.scaled(context), 4.scaled(context), 4.scaled(context)) .decoratorLabel(context, _decoratorLabel); } return ctrl; } final String _label; final String? _decoratorLabel; final Future Function(bool)? _onChanged; final bool _value; }