dialogs.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'package:get/get.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:styled_widget/styled_widget.dart';
  4. Future<bool?> showNormalDialog(
  5. BuildContext context, {
  6. String? content,
  7. Widget? child,
  8. required String title,
  9. required String cancelText,
  10. required String enterText,
  11. bool Function()? validator,
  12. }) {
  13. assert(content != null || child != null);
  14. return showDialog(
  15. context: context,
  16. builder: (c) => AlertDialog(
  17. title: Text(title).textColor(Theme.of(context).primaryColor).textShadow(blurRadius: 6, offset: const Offset(0, 2)),
  18. content: child ?? Text(content!).textColor(const Color(0xff54759a)),
  19. actions: [
  20. TextButton(
  21. onPressed: () => Navigator.pop(c, false),
  22. style: ButtonStyle(
  23. minimumSize: MaterialStateProperty.all(const Size(70, 36)),
  24. shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(16))),
  25. side: MaterialStateProperty.all(const BorderSide(color: Color(0x1a000000), width: 1)),
  26. ),
  27. child: Text(cancelText),
  28. ),
  29. TextButton(
  30. onPressed: () => validator?.call() == false ? null : Navigator.pop(c, true),
  31. style: ButtonStyle(
  32. minimumSize: MaterialStateProperty.all(const Size(70, 36)),
  33. backgroundColor: MaterialStateProperty.all(Theme.of(context).primaryColor),
  34. shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(16))),
  35. side: MaterialStateProperty.all(const BorderSide(color: Color(0x1a000000), width: 1)),
  36. ),
  37. child: Text(enterText).textColor(Colors.white),
  38. ).boxShadow(color: const Color(0x802c8af8), blurRadius: 8, offset: const Offset(0, 2)),
  39. ],
  40. ),
  41. );
  42. }
  43. // Future<ConfigSub?> showEditProfileDialog(BuildContext context,
  44. // {ConfigSub? sub, required String title, bool Function(ConfigSub sub)? validator}) async {
  45. // final child = EditProfile(name: sub?.name, url: sub?.url);
  46. // final res = await showNormalDialog(
  47. // context,
  48. // title: title,
  49. // child: child,
  50. // enterText: 'model_ok'.tr,
  51. // cancelText: 'model_cancel'.tr,
  52. // validator: () => validator?.call(ConfigSub(name: child.nameInputController.text, url: child.urlInputController.text)) ?? true,
  53. // );
  54. // if (res != true) return null;
  55. // return ConfigSub(name: child.nameInputController.text, url: child.urlInputController.text, updateTime: sub?.updateTime);
  56. // }