pile_nav_new/lib/pages/aim_point/aimCard.dart

57 lines
2.0 KiB
Dart
Raw Normal View History

2024-08-27 18:08:05 +08:00
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;
},
),
),
]),
)))));
}
}