layer_cp_start_bubble.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'dart:math';
  2. import 'package:bubble/bubble.dart';
  3. import 'package:trackoffical_app/screen.dart';
  4. import 'game_std_controller.dart';
  5. class LayerCPStartBubble extends LayerView<GameStdController> {
  6. const LayerCPStartBubble({super.key});
  7. @override
  8. Widget build(BuildContext context) {
  9. return Obx(() {
  10. final model = viewModel.instance.model;
  11. var points = model.controlPointWantSequence;
  12. if (model.startAt != null || points.isEmpty) {
  13. return const SizedBox();
  14. }
  15. final start = points[0];
  16. var xy = viewModel
  17. .mapOffsetToScreen(Offset(start.onMap.dx, start.onMap.dy));
  18. var x = xy.dx;
  19. var y = xy.dy;
  20. var h0 = viewModel
  21. .mapOffsetToScreen(const Offset(0, 0));
  22. var h1 = viewModel
  23. .mapOffsetToScreen(const Offset(0, 60));
  24. final dx = h1.dx - h0.dx;
  25. final dy = h1.dy - h0.dy;
  26. var h = sqrt(dx * dx + dy * dy);
  27. return Positioned(
  28. top: y,
  29. left: x + h + 1.0.wp,
  30. child: Bubble(
  31. nip: BubbleNip.leftTop,
  32. alignment: Alignment.topRight,
  33. child: const Text('打开始点后计时', style: TextStyle(color: Colors.red)),
  34. ),
  35. );
  36. });
  37. }
  38. }