layer_cp_touch.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:get/get.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:trackoffical_app/service/game/game.dart';
  4. import 'package:trackoffical_app/service/game/game_model.dart';
  5. import 'package:transparent_pointer/transparent_pointer.dart';
  6. class LayerCPTouch extends GetView<GameModel> {
  7. const LayerCPTouch({super.key});
  8. @override
  9. Widget build(BuildContext context) {
  10. return Obx(() {
  11. final service = Get.find<GameService>();
  12. final children = <Widget>[];
  13. final wants = controller.controlPointWantSequence;
  14. const size = 40.0;
  15. for (var i = 0; i < wants.length; i++) {
  16. final one = wants[i];
  17. final offset = service.mapStatus.picOffsetToScreen(one.onMap);
  18. var x = offset.dx;
  19. var y = offset.dy;
  20. children.add(Positioned(
  21. left: x - size / 2,
  22. top: y - size / 2,
  23. child:TransparentPointer(
  24. child:GestureDetector(
  25. onDoubleTap: () {
  26. controller.nextPlanPoint = one;
  27. },
  28. child: Container(
  29. height: size,
  30. width: size,
  31. color: Colors.red.withAlpha(0),
  32. ),
  33. ))) );
  34. }
  35. return Stack(
  36. children: children,
  37. );
  38. });
  39. }
  40. }