common_popup.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'dart:ui';
  2. import 'package:electronic_assistant/utils/expand.dart';
  3. import 'package:flutter/cupertino.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter_screenutil/flutter_screenutil.dart';
  6. import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
  7. void showPressTouchPopup(
  8. Offset offset, Alignment alignment, List<Widget> childWidget,
  9. {String? tag, BuildContext? bindWidget}) {
  10. SmartDialog.showAttach(
  11. targetContext: null,
  12. targetBuilder: (_, __) => offset,
  13. animationType: SmartAnimationType.fade,
  14. clickMaskDismiss: true,
  15. alignment: alignment,
  16. bindWidget: bindWidget,
  17. tag: tag,
  18. maskColor: Colors.transparent,
  19. builder: (_) {
  20. return IntrinsicWidth(
  21. child: Container(
  22. constraints: BoxConstraints(
  23. minWidth: 128.w,
  24. ),
  25. decoration: BoxDecoration(
  26. color: Colors.white,
  27. border: Border.all(color: '#D8D8D8'.toColor(), width: 1), // 边框
  28. borderRadius: BorderRadius.circular(8), // 圆角
  29. boxShadow: [
  30. BoxShadow(
  31. color: Colors.black.withOpacity(0.1), // 阴影颜色
  32. spreadRadius: 2, // 阴影扩散半径
  33. blurRadius: 6, // 阴影模糊半径
  34. offset: const Offset(0, 3), // 阴影偏移量
  35. ),
  36. ],
  37. ),
  38. child: Column(
  39. children: childWidget,
  40. ),
  41. ),
  42. );
  43. },
  44. );
  45. }
  46. void showViewTargetPopup(
  47. BuildContext context, Alignment alignment, List<Widget> childWidget) {
  48. SmartDialog.showAttach(
  49. targetContext: context,
  50. targetBuilder: (targetOffset, targetSize) {
  51. return Offset(targetOffset.dx, targetOffset.dy);
  52. },
  53. alignment: alignment,
  54. animationType: SmartAnimationType.fade,
  55. clickMaskDismiss: true,
  56. maskColor: Colors.transparent,
  57. bindPage: true,
  58. builder: (_) => IntrinsicWidth(
  59. child: Container(
  60. constraints: BoxConstraints(
  61. minWidth: 128.w,
  62. ),
  63. decoration: BoxDecoration(
  64. color: Colors.white,
  65. border: Border.all(color: '#D8D8D8'.toColor(), width: 1), // 边框
  66. borderRadius: BorderRadius.circular(8), // 圆角
  67. boxShadow: [
  68. BoxShadow(
  69. color: Colors.black.withOpacity(0.1), // 阴影颜色
  70. spreadRadius: 2, // 阴影扩散半径
  71. blurRadius: 6, // 阴影模糊半径
  72. offset: const Offset(0, 3), // 阴影偏移量
  73. ),
  74. ],
  75. ),
  76. child: Column(
  77. children: childWidget,
  78. ),
  79. ),
  80. ),
  81. );
  82. }