template_utils.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import 'dart:ui';
  2. import 'package:electronic_assistant/utils/expand.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:get/get.dart';
  6. import '../resource/assets.gen.dart';
  7. import '../resource/colors.gen.dart';
  8. import '../resource/string.gen.dart';
  9. Widget createPopupDivider(
  10. {Color color = const Color(0xFFF6F6F6), double height = 1}) {
  11. return Divider(color: color, height: height);
  12. }
  13. Widget createNormalPopupItem(String title, {VoidCallback? onItemClick}) {
  14. return GestureDetector(
  15. onTap: onItemClick,
  16. child: Container(
  17. color: Colors.transparent,
  18. padding: EdgeInsets.symmetric(horizontal: _itemPadding),
  19. height: _itemHeight,
  20. child: Align(
  21. alignment: Alignment.centerLeft,
  22. child: Text(
  23. title,
  24. style: TextStyle(
  25. fontSize: 14.sp,
  26. color: ColorName.primaryTextColor,
  27. ),
  28. ),
  29. ),
  30. ),
  31. );
  32. }
  33. Widget createDeletePopupItem(VoidCallback? onDelete) {
  34. return GestureDetector(
  35. onTap: () {
  36. onDelete?.call();
  37. },
  38. child: Container(
  39. color: Colors.transparent,
  40. padding: EdgeInsets.symmetric(horizontal: _itemPadding),
  41. height: _itemHeight,
  42. child: Row(
  43. crossAxisAlignment: CrossAxisAlignment.center,
  44. children: [
  45. Text(
  46. StringName.talkDelete.tr,
  47. style: TextStyle(color: '#F5574E'.toColor(), fontSize: 14.sp),
  48. ),
  49. const Spacer(),
  50. SizedBox(
  51. width: 20.w,
  52. height: 20.w,
  53. child: Assets.images.iconTalkDelete.image())
  54. ],
  55. ),
  56. ),
  57. );
  58. }
  59. Widget createSelectItem(String title, bool isSelect,
  60. {VoidCallback? onItemClick}) {
  61. return GestureDetector(
  62. onTap: onItemClick,
  63. child: ConstrainedBox(
  64. constraints: BoxConstraints(minWidth: 128.w, minHeight: 48.w),
  65. child: Container(
  66. color: ColorName.transparent,
  67. child: Row(
  68. children: [
  69. SizedBox(width: 14.w),
  70. Text(title,
  71. style: TextStyle(
  72. fontSize: 14.sp, color: ColorName.primaryTextColor)),
  73. const Spacer(),
  74. Visibility(
  75. visible: isSelect,
  76. child: Assets.images.iconPopupSelected
  77. .image(width: 20.w, height: 20.w)),
  78. SizedBox(width: 16.w),
  79. ],
  80. ),
  81. ),
  82. ),
  83. );
  84. }
  85. final _itemHeight = 52.h;
  86. final _itemPadding = 14.w;