keyboard_guide_overlay_dialog.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
  4. import 'package:keyboard/resource/assets.gen.dart';
  5. import '../../../resource/colors.gen.dart';
  6. import '../../../utils/widget_location_util.dart';
  7. /// 键盘引导-引导覆盖弹窗
  8. class KeyboardGuideOverlayDialog {
  9. static final _tag = "KeyboardGuideOverlayDialog";
  10. /// 显示
  11. /// [targetWidgetKey] 目标组件的key
  12. /// [onFinishCallback] 结束引导时回调
  13. static void show(
  14. GlobalKey targetWidgetKey, {
  15. required VoidCallback onCopyCallback,
  16. required VoidCallback onFinishCallback,
  17. }) {
  18. // 获取组件的位置信息
  19. var targetWidgetInfo = WidgetLocationUtil.getWidgetLocation(
  20. targetWidgetKey,
  21. );
  22. SmartDialog.show(
  23. tag: _tag,
  24. backType: SmartBackType.normal,
  25. clickMaskDismiss: true,
  26. maskColor: ColorName.black70,
  27. onDismiss: () {
  28. onFinishCallback();
  29. },
  30. builder: (_) {
  31. return SizedBox(
  32. width: double.infinity,
  33. height: double.infinity,
  34. child: Stack(
  35. children: [
  36. Positioned(
  37. left: targetWidgetInfo.position.dx,
  38. top: targetWidgetInfo.position.dy,
  39. child: GestureDetector(
  40. onTap: () {
  41. onCopyCallback();
  42. SmartDialog.dismiss(tag: _tag);
  43. },
  44. child: Assets.images.iconKeyboardGuideOverlay1.image(
  45. width: 320.w,
  46. ),
  47. ),
  48. ),
  49. ],
  50. ),
  51. );
  52. },
  53. );
  54. }
  55. }