暫無描述

checkbox_builder_delegate.dart 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart' hide CheckboxListTile;
  2. import 'package:photo/src/entity/options.dart';
  3. import 'package:photo/src/provider/i18n_provider.dart';
  4. import 'package:photo/src/ui/widget/check_tile_copy.dart';
  5. abstract class CheckBoxBuilderDelegate {
  6. Widget buildCheckBox(
  7. BuildContext context,
  8. bool checked,
  9. int index,
  10. Options options,
  11. I18nProvider i18nProvider,
  12. );
  13. }
  14. class DefaultCheckBoxBuilderDelegate extends CheckBoxBuilderDelegate {
  15. Color activeColor;
  16. Color unselectedColor;
  17. DefaultCheckBoxBuilderDelegate({
  18. this.activeColor = Colors.white,
  19. this.unselectedColor = Colors.white,
  20. });
  21. @override
  22. Widget buildCheckBox(
  23. BuildContext context,
  24. bool checked,
  25. int index,
  26. Options options,
  27. I18nProvider i18nProvider,
  28. ) {
  29. return Theme(
  30. data: Theme.of(context).copyWith(unselectedWidgetColor: unselectedColor),
  31. child: CheckboxListTile(
  32. value: checked,
  33. onChanged: (bool check) {},
  34. activeColor: activeColor,
  35. checkColor: unselectedColor,
  36. title: Text(
  37. i18nProvider.getSelectedOptionsText(options),
  38. textAlign: TextAlign.end,
  39. style: TextStyle(color: options.textColor),
  40. ),
  41. ),
  42. );
  43. }
  44. }
  45. class RadioCheckBoxBuilderDelegate extends CheckBoxBuilderDelegate {
  46. Color activeColor;
  47. Color unselectedColor;
  48. RadioCheckBoxBuilderDelegate({
  49. this.activeColor = Colors.white,
  50. this.unselectedColor = Colors.white,
  51. });
  52. @override
  53. Widget buildCheckBox(
  54. BuildContext context,
  55. bool checked,
  56. int index,
  57. Options options,
  58. I18nProvider i18nProvider,
  59. ) {
  60. return Theme(
  61. data: Theme.of(context).copyWith(unselectedWidgetColor: unselectedColor),
  62. child: RadioListTile<bool>(
  63. value: true,
  64. onChanged: (bool check) {},
  65. activeColor: activeColor,
  66. title: Text(
  67. i18nProvider.getSelectedOptionsText(options),
  68. textAlign: TextAlign.end,
  69. style: TextStyle(color: options.textColor, fontSize: 14.0),
  70. ),
  71. groupValue: checked,
  72. controlAffinity: ListTileControlAffinity.trailing,
  73. ),
  74. );
  75. }
  76. }