adaptive_dialog.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Adaptive Dialog
  2. // Adapted from flutter/flutter, using FlatButton, CupertinoDialogAction
  3. // showDialog, showCupertinoDialog
  4. //
  5. // Licensed under:
  6. // https://raw.githubusercontent.com/flutter/flutter/master/LICENSE
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter/cupertino.dart';
  9. import './adaptive_base.dart' show AdaptiveBase;
  10. class AdaptiveAndroidDialogActionData {
  11. final Key? key;
  12. final VoidCallback? onPressed;
  13. final Widget? child;
  14. AdaptiveAndroidDialogActionData(
  15. {this.key, @required this.onPressed, @required this.child});
  16. }
  17. class AdaptiveCupertinoDialogActionData {
  18. final Key? key;
  19. final VoidCallback? onPressed;
  20. final Widget? child;
  21. AdaptiveCupertinoDialogActionData(
  22. {this.key, this.onPressed, @required this.child});
  23. }
  24. class AdaptiveDialogAction
  25. extends AdaptiveBase<TextButton, CupertinoDialogAction> {
  26. final AdaptiveAndroidDialogActionData? androidData;
  27. final AdaptiveCupertinoDialogActionData? cupertinoData;
  28. final VoidCallback onPressed;
  29. final Widget child;
  30. const AdaptiveDialogAction(
  31. {this.androidData,
  32. this.cupertinoData,
  33. required this.onPressed,
  34. required this.child,
  35. Key? key})
  36. : super(key);
  37. @override
  38. TextButton createAndroidWidget(BuildContext context) {
  39. return TextButton(
  40. key: androidData?.key,
  41. onPressed: androidData?.onPressed ?? onPressed,
  42. child: androidData?.child ?? child,
  43. );
  44. }
  45. @override
  46. CupertinoDialogAction createCupertinoWidget(BuildContext context) {
  47. return CupertinoDialogAction(
  48. key: androidData?.key,
  49. onPressed: cupertinoData?.onPressed ?? onPressed,
  50. child: cupertinoData?.child ?? child,
  51. );
  52. }
  53. }