veilidchat/lib/theme/views/styled_widgets/styled_button_box.dart
2025-05-25 23:40:52 -04:00

59 lines
2.3 KiB
Dart

import 'package:awesome_extensions/awesome_extensions.dart';
import 'package:flutter/material.dart';
import '../../theme.dart';
class StyledButtonBox extends StatelessWidget {
const StyledButtonBox(
{required String instructions,
required IconData buttonIcon,
required String buttonText,
required void Function() onClick,
super.key})
: _instructions = instructions,
_buttonIcon = buttonIcon,
_buttonText = buttonText,
_onClick = onClick;
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final scale = theme.extension<ScaleScheme>()!;
final scaleConfig = theme.extension<ScaleConfig>()!;
return Container(
constraints: const BoxConstraints(maxWidth: 400),
decoration: BoxDecoration(
color: scale.primaryScale.subtleBackground,
borderRadius:
BorderRadius.circular(8 * scaleConfig.borderRadiusScale),
border: Border.all(color: scale.primaryScale.border)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
style: theme.textTheme.labelMedium!
.copyWith(color: scale.primaryScale.appText),
softWrap: true,
textAlign: TextAlign.center,
_instructions),
ElevatedButton(
onPressed: _onClick,
child: Row(mainAxisSize: MainAxisSize.min, children: [
Icon(_buttonIcon,
size: 24.scaled(context),
color: scale.primaryScale.appText)
.paddingLTRB(0, 8.scaled(context),
8.scaled(context), 8.scaled(context)),
Text(textAlign: TextAlign.center, _buttonText)
])).paddingLTRB(0, 12.scaled(context), 0, 0).toCenter()
]).paddingAll(12.scaled(context)))
.paddingLTRB(
24.scaled(context), 0, 24.scaled(context), 12.scaled(context));
}
final String _instructions;
final IconData _buttonIcon;
final String _buttonText;
final void Function() _onClick;
}