| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- import 'package:trackoffical_app/model/game_map.dart';
- import 'package:trackoffical_app/model/game_person_data.dart';
- import 'package:trackoffical_app/screen.dart';
- import 'package:trackoffical_app/service/api.dart';
- import 'package:trackoffical_app/service/app.dart';
- import 'package:trackoffical_app/service/database.dart';
- import 'layer_under_guardian.dart';
- import '../layer/layer_cp.dart';
- import 'package:trackoffical_app/widget/my_position_point.dart';
- import '../../../service/sport_wear.dart';
- import '../layer/layer_trace.dart';
- import 'layer_front_ui.dart';
- import 'guardian_controller.dart';
- import '../layer/layer_controller.dart';
- import '../layer/layer_map_touch.dart';
- import '../layer/layer_map.dart';
- import '../../../service/game/game_instance_guardian.dart';
- import 'package:trackoffical_app/pb.dart' as pb;
- class GuardianWatchGameView extends GetView<LayerController>{
- const GuardianWatchGameView({
- super.key});
- static final _pointColorList = <Color>[
- Colors.orange,
- Colors.blue,
- Colors.red,
- ];
- static Bindings bindings() {
- return BindingsBuilder(() {
- Get.lazyPut<LayerController>(() => GuardianController());
- });
- }
- @override
- Widget build(BuildContext context) {
- final c = controller;
- if(c is! GuardianControllerMock){
- throw UnimplementedError('${c.runtimeType} is not GuardianController');
- }
- return Obx((){
- final children = <Widget>[];
- if(c.mapWidgetSize.value != null){
- final selectedPerson = c.selectedPersonData;
- children.add(const LayerMap());
- children.add(Container(color: Colors.white.withAlpha(125)));
- var i = 0;
- for(var person in c.instance.gamePersonData){
- children.add(LayerTrace(
- onMapTrace: person.myPositionOnMapHistory,
- color: _pointColorList[i]));
- i++;
- if(i> _pointColorList.length-1){
- i=_pointColorList.length-1;
- }
- }
- if(selectedPerson!= null && c.isShowRoute.value){
- children.add(LayerCP(
- isHideRouteBeforeStart: false,
- wantList: selectedPerson.controlPointWantSequence
- ));
- }
- if(c.isShowGuardian.value){
- children.add(_LayerGuardianPosition());
- }
- children.addAll([
- const LayerMapTouch(),
- LayerUnderGuardian(_pointColorList),
- ]);
- }
- children.addAll([
- const LayerFrontUI()
- ]);
- return Scaffold(
- backgroundColor: const Color(0xffd6d6d6),
- body: Stack(
- key: c.mapWidgetKey,
- alignment: Alignment.topLeft,
- children: children
- ),
- );
- });
- }
- }
- class _LayerGuardianPosition extends GetView<LayerController>{
- @override
- Widget build(BuildContext context) {
- final c = controller;
- if (c is! GuardianControllerMock) {
- throw UnimplementedError('${c.runtimeType} is not GuardianController');
- }
- return Obx((){
- var p = c.guardianPositionOnMap.value;
- if (p == null) {
- return const SizedBox();
- }
- p = c.mapOffsetToScreen(p);
- return Stack(
- children: [
- SizedBox(width: context.width, height: context.height),
- MyPositionPoint(offset: p, color: Colors.blue)
- ]);
- });
- }
- }
- void main()async{
- Get.put<App>(App());
- Get.put(SportWearService());
- Get.put<DatabaseService>(DatabaseService());
- Get.put<ApiService>(ApiService());
- await App.to.init();
- await DatabaseService.to.init();
- await ApiService.to.init();
- final data = GameInstanceGuardian(underGuardianId: -1);
- data.gameMapData = (pb.NetImage()
- ..md5= [53, 52, 51, 52, 53, 51, 49, 50, 50, 51, 50, 51, 49, 49]
- ).toGameMap();
- data.gamePersonData.add(GamePersonData()
- ..userName='赵小曼'
- ..myPositionOnMapHistory.addAll([
- Offset(3000, 4000),
- Offset(3000, 4100),
- Offset(3000, 4200),
- Offset(3100, 4200),
- Offset(3200, 4200),
- Offset(3300, 4200),
- Offset(3400, 4200),
- Offset(3500, 4200),
- Offset(3600, 4200),
- Offset(3700, 4200),
- Offset(3800, 4200),
- ]));
- await data.init();
- final c = GuardianControllerMock();
- c.instance = data;
- c.guardianPositionOnMap.value = Offset(4800, 5200);
- Get.put<LayerController>(c);
- runPreview(GuardianWatchGameView());
- }
|