edit_agenda_dialog.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import 'package:electronic_assistant/resource/colors.gen.dart';
  2. import 'package:electronic_assistant/resource/string.gen.dart';
  3. import 'package:electronic_assistant/utils/expand.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter_screenutil/flutter_screenutil.dart';
  6. import 'package:get/get.dart';
  7. typedef EditAgendaCallback = void Function(String content);
  8. void showEditAgendaDialog(
  9. BuildContext context, TextEditingController etFieldController,
  10. {String? hintTxt, EditAgendaCallback? callback}) {
  11. final etPrintTxt = ''.obs;
  12. etFieldController.addListener(() {
  13. etPrintTxt.value = etFieldController.text;
  14. });
  15. showModalBottomSheet(
  16. context: context,
  17. enableDrag: false,
  18. isScrollControlled: true,
  19. backgroundColor: ColorName.transparent,
  20. builder: (BuildContext context) {
  21. return Padding(
  22. padding: EdgeInsets.only(
  23. bottom: MediaQuery.of(context).viewInsets.bottom,
  24. ),
  25. child: Container(
  26. padding: EdgeInsets.all(16.w),
  27. margin: EdgeInsets.all(12.w),
  28. decoration: BoxDecoration(
  29. borderRadius: BorderRadius.all(Radius.circular(12.w)),
  30. color: "#FFFFFF".toColor(),
  31. ),
  32. child: IntrinsicHeight(
  33. child: Column(
  34. mainAxisSize: MainAxisSize.min, // 使弹窗高度自适应内容
  35. children: [
  36. Row(
  37. children: [
  38. GestureDetector(
  39. onTap: () {
  40. Get.back();
  41. },
  42. child: Text(StringName.cancel.tr,
  43. style: TextStyle(
  44. color: ColorName.secondaryTextColor,
  45. fontSize: 14.sp)),
  46. ),
  47. const Spacer(),
  48. Text(StringName.agendaDetailEditTitle.tr,
  49. style: TextStyle(
  50. color: ColorName.primaryTextColor,
  51. fontSize: 15.sp)),
  52. const Spacer(),
  53. Obx(() {
  54. return GestureDetector(
  55. onTap: () {
  56. if (etFieldController.text.isEmpty) {
  57. return;
  58. }
  59. callback?.call(etFieldController.text);
  60. },
  61. child: Text(StringName.done.tr,
  62. style: TextStyle(
  63. color: etPrintTxt.value.isNotEmpty
  64. ? ColorName.colorPrimary
  65. : ColorName.tertiaryTextColor,
  66. fontSize: 15.sp)),
  67. );
  68. }),
  69. ],
  70. ),
  71. SizedBox(height: 16.h),
  72. Container(
  73. decoration: BoxDecoration(
  74. color: "#F6F5F8".toColor(),
  75. borderRadius: BorderRadius.circular(8),
  76. ),
  77. height: 150.h,
  78. child: TextField(
  79. maxLines: null,
  80. maxLength: 200,
  81. cursorColor: ColorName.primaryTextColor,
  82. style: TextStyle(
  83. fontSize: 15.sp, color: ColorName.primaryTextColor),
  84. decoration: InputDecoration(
  85. counterText: '',
  86. border: InputBorder.none,
  87. fillColor: Colors.transparent,
  88. hintText: hintTxt,
  89. hintStyle: TextStyle(
  90. fontSize: 15.sp, color: ColorName.tertiaryTextColor),
  91. contentPadding: EdgeInsets.symmetric(
  92. vertical: 14.w, horizontal: 10.w), // 设置TextField的高度
  93. ),
  94. controller: etFieldController,
  95. ),
  96. )
  97. ],
  98. ),
  99. ),
  100. ),
  101. );
  102. },
  103. );
  104. }