57 lines
2.0 KiB
Dart
57 lines
2.0 KiB
Dart
import 'package:cpnav/pages/pass_track/view.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import 'aimPointer.dart';
|
|
|
|
final SightController controller = Get.put(SightController());
|
|
|
|
class SightGview extends GetView<SightController> {
|
|
const SightGview({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final Size size = MediaQuery.of(context).size;
|
|
|
|
return Obx(() => Positioned(
|
|
left: controller.sightOffset.value.dx,
|
|
top: controller.sightOffset.value.dy,
|
|
width: size.width / 5 * 1.5,
|
|
height: size.width / 5 * 1.5,
|
|
child: GestureDetector(
|
|
onScaleStart: (details) {
|
|
// 正确计算初始偏移量:当前手指位置与卡片当前位置之间的差值
|
|
controller.sightInit.value =
|
|
details.localFocalPoint - controller.sightOffset.value;
|
|
},
|
|
onScaleUpdate: (details) {
|
|
// 使用初始偏移量来更新卡片的位置
|
|
controller.sightOffset.value =
|
|
details.localFocalPoint - controller.sightInit.value;
|
|
},
|
|
child: Visibility(
|
|
visible: mapcontroller.isCardVisible.value, // 控制可见性
|
|
child: Container(
|
|
decoration: const BoxDecoration(color: Colors.transparent),
|
|
child: Stack(children: [
|
|
const Card(
|
|
elevation: 5.0,
|
|
child: SightView(),
|
|
),
|
|
Positioned(
|
|
right: 0,
|
|
top: 0,
|
|
child: IconButton(
|
|
icon: const Icon(Icons.close),
|
|
onPressed: () {
|
|
// 关闭按钮的回调函数
|
|
mapcontroller.isCardVisible.value = false;
|
|
},
|
|
),
|
|
),
|
|
]),
|
|
)))));
|
|
}
|
|
}
|