dialogs.dart 2.5 KB

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