toggle_switch_widget.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:flutter/material.dart';
  2. import 'package:photos/ente_theme_data.dart';
  3. typedef OnChangedCallBack = Future<void> Function();
  4. typedef ValueCallBack = bool Function();
  5. class ToggleSwitchWidget extends StatefulWidget {
  6. final ValueCallBack value;
  7. final OnChangedCallBack onChanged;
  8. const ToggleSwitchWidget({
  9. required this.value,
  10. required this.onChanged,
  11. Key? key,
  12. }) : super(key: key);
  13. @override
  14. State<ToggleSwitchWidget> createState() => _ToggleSwitchWidgetState();
  15. }
  16. class _ToggleSwitchWidgetState extends State<ToggleSwitchWidget> {
  17. @override
  18. Widget build(BuildContext context) {
  19. final enteColorScheme = Theme.of(context).colorScheme.enteTheme.colorScheme;
  20. return Padding(
  21. padding: const EdgeInsets.symmetric(vertical: 4),
  22. child: SizedBox(
  23. height: 30,
  24. child: FittedBox(
  25. fit: BoxFit.contain,
  26. child: Switch.adaptive(
  27. activeColor: enteColorScheme.primary400,
  28. inactiveTrackColor: enteColorScheme.fillMuted,
  29. materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
  30. value: widget.value.call(),
  31. onChanged: (value) async {
  32. await widget.onChanged.call();
  33. setState(() {});
  34. },
  35. ),
  36. ),
  37. ),
  38. );
  39. }
  40. }