criterion_button_widget.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:flutter/material.dart';
  2. import 'default_button.dart';
  3. class CriterionButton extends StatefulWidget {
  4. final String text;
  5. final void Function(bool isSelected)? onSelectChange;
  6. final bool? intialSelectedValue;
  7. const CriterionButton({
  8. Key? key,
  9. required this.text,
  10. this.intialSelectedValue,
  11. this.onSelectChange,
  12. }) : super(key: key);
  13. @override
  14. _CriterionButtonState createState() => _CriterionButtonState();
  15. }
  16. class _CriterionButtonState extends State<CriterionButton> {
  17. late bool isSelected = widget.intialSelectedValue ?? false;
  18. @override
  19. Widget build(BuildContext context) {
  20. return Stack(
  21. clipBehavior: Clip.none,
  22. children: [
  23. DefaultButton.text(
  24. widget.text,
  25. width: double.infinity,
  26. outlineColor: Theme.of(context).colorScheme.secondary,
  27. color: isSelected ? Theme.of(context).colorScheme.secondary.withOpacity(.2) : Colors.transparent,
  28. textColor: isSelected ? Theme.of(context).colorScheme.secondary : const Color(0xFF2F333A),
  29. flat: true,
  30. onPressed: () {
  31. setState(() => isSelected = !isSelected);
  32. widget.onSelectChange?.call(isSelected);
  33. },
  34. ),
  35. ],
  36. );
  37. }
  38. }