primary_button.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import '../size.dart';
  4. import '../text_style.dart';
  5. import '../theme.dart';
  6. import 'base_styled_button.dart';
  7. // ignore: import_of_legacy_library_into_null_safe
  8. import 'package:textstyle_extensions/textstyle_extensions.dart';
  9. class PrimaryButton extends StatelessWidget {
  10. final Widget child;
  11. final VoidCallback? onPressed;
  12. final bool bigMode;
  13. const PrimaryButton(
  14. {Key? key, required this.child, this.onPressed, this.bigMode = false})
  15. : super(key: key);
  16. @override
  17. Widget build(BuildContext context) {
  18. final theme = context.watch<AppTheme>();
  19. return BaseStyledButton(
  20. minWidth: bigMode ? 160 : 78,
  21. minHeight: bigMode ? 60 : 42,
  22. contentPadding: EdgeInsets.all(bigMode ? Insets.l : Insets.m),
  23. bgColor: theme.accent1Darker,
  24. hoverColor: theme.isDark ? theme.accent1 : theme.accent1Dark,
  25. downColor: theme.accent1Darker,
  26. borderRadius: bigMode ? Corners.s8 : Corners.s5,
  27. child: child,
  28. onPressed: onPressed,
  29. );
  30. }
  31. }
  32. class PrimaryTextButton extends StatelessWidget {
  33. final String label;
  34. final VoidCallback? onPressed;
  35. final bool bigMode;
  36. const PrimaryTextButton(this.label,
  37. {Key? key, this.onPressed, this.bigMode = false})
  38. : super(key: key);
  39. @override
  40. Widget build(BuildContext context) {
  41. TextStyle txtStyle = (bigMode ? TextStyles.Callout : TextStyles.Footnote)
  42. .textColor(Colors.white);
  43. return PrimaryButton(
  44. bigMode: bigMode,
  45. onPressed: onPressed,
  46. child: Text(label, style: txtStyle));
  47. }
  48. }