Add map survey view - to measure a point
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/controllers/map_survey_controller.dart';
|
||||
|
||||
class MapAddPointDialog extends GetView<MapSurveyController> {
|
||||
const MapAddPointDialog({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
TextField(
|
||||
controller: controller.pointIdController,
|
||||
autofocus: true,
|
||||
keyboardType: TextInputType.number,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(), labelText: 'Azonosító'),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 20.0,
|
||||
),
|
||||
TextField(
|
||||
controller: controller.pointDescriptionController,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(), labelText: 'Leírás'),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
OutlinedButton(
|
||||
style: OutlinedButton.styleFrom(
|
||||
minimumSize: const Size(120.0, 40.0)),
|
||||
child: const Text(
|
||||
"Mégsem",
|
||||
style: TextStyle(color: Colors.red),
|
||||
),
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
},
|
||||
),
|
||||
OutlinedButton(
|
||||
style: OutlinedButton.styleFrom(
|
||||
minimumSize: const Size(120.0, 40.0)),
|
||||
child: const Text(
|
||||
"Ment",
|
||||
style: TextStyle(
|
||||
color: Colors.green, fontWeight: FontWeight.bold),
|
||||
),
|
||||
onPressed: () async {
|
||||
// pointId = int.parse(pointIdController.text);
|
||||
// pointWithDescriptionList.add(PointWithDescription(
|
||||
// pointId,
|
||||
// gpsDateTime.value,
|
||||
// pointDescriptionController.text,
|
||||
// eov.value.Y,
|
||||
// eov.value.X,
|
||||
// gpsLatitude.value,
|
||||
// gpsLongitude.value,
|
||||
// max(gpsLatitudeError.value, gpsLongitudeError.value),
|
||||
// gpsAltitudeError.value));
|
||||
// print(
|
||||
// "pointWithDescriptionList -> ${pointWithDescriptionList.length}");
|
||||
// pointNotesMarker.add(Marker(
|
||||
// point: LatLng(gpsLatitude.value, gpsLongitude.value),
|
||||
// width: 15.0,
|
||||
// height: 15.0,
|
||||
// builder: (ctx) => Container(
|
||||
// width: 15.0,
|
||||
// height: 15.0,
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.purple,
|
||||
// shape: BoxShape.circle,
|
||||
// border: Border.all(
|
||||
// width: 1.0, color: Colors.black)),
|
||||
// )));
|
||||
// await dataFile.writeAsString(
|
||||
// "$pointId;$gpsDateTime;${pointDescriptionController.text};${formatEovForFile.format(eov.value.Y)};${formatEovForFile.format(eov.value.X)};$gpsLatitude;$gpsLongitude;$gpsAltitude;${max(gpsLatitudeError.value, gpsLongitudeError.value)};$gpsAltitudeError\r\n",
|
||||
// mode: FileMode.append);
|
||||
|
||||
// pointId++;
|
||||
|
||||
Get.back();
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,430 @@
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map_polywidget/flutter_map_polywidget.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:rive/rive.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/controllers/map_survey_controller.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/views/settings_dialog.dart';
|
||||
import 'package:terepi_seged/utils/rive_utils.dart';
|
||||
|
||||
import 'map_add_point_dialog.dart';
|
||||
|
||||
class MapSurveyView extends GetView<MapSurveyController> {
|
||||
const MapSurveyView({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
late SMIBool gpsTrigger;
|
||||
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: false,
|
||||
extendBody: true,
|
||||
appBar: AppBar(
|
||||
title: const Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Térkép'),
|
||||
Text(
|
||||
"",
|
||||
style: TextStyle(fontSize: 12.0),
|
||||
)
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 20.0),
|
||||
child: Obx(
|
||||
() => GestureDetector(
|
||||
onTap: () {
|
||||
if (controller.gpsIsConnected.value) {
|
||||
controller.disconnectFromGps();
|
||||
} else {
|
||||
controller.connectToGps();
|
||||
}
|
||||
},
|
||||
child: Icon(Icons.gps_fixed,
|
||||
size: 26.0,
|
||||
color: controller.gpsIsConnected.value
|
||||
? Colors.green
|
||||
: Colors.red),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 20.0),
|
||||
child: Obx(
|
||||
() => GestureDetector(
|
||||
onTap: () {
|
||||
if (controller.ntripIsConnected.value) {
|
||||
controller.disconnectFromNtripServer();
|
||||
} else {
|
||||
controller.connectToNtripServer();
|
||||
}
|
||||
},
|
||||
child: Icon(
|
||||
Icons.assistant,
|
||||
size: 26.0,
|
||||
color: controller.ntripIsConnected.value
|
||||
? Colors.green
|
||||
: Colors.red,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 20.0),
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
if (controller.ntripUserName.value.isNotEmpty) {
|
||||
controller.ntripUsernameController.text =
|
||||
controller.ntripUserName.value;
|
||||
}
|
||||
if (controller.ntripPassword.value.isNotEmpty) {
|
||||
controller.ntripPasswordController.text =
|
||||
controller.ntripPassword.value;
|
||||
}
|
||||
Get.to(() => SettingsDialog(), transition: Transition.downToUp);
|
||||
},
|
||||
child: const Icon(
|
||||
Icons.more_vert,
|
||||
size: 26.0,
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
Obx(
|
||||
() => controller.gpsIsConnected.value
|
||||
? Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: 170.0,
|
||||
// height: 160.0,
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
width: 2.0,
|
||||
color: const Color.fromARGB(
|
||||
130, 255, 255, 255)),
|
||||
color:
|
||||
const Color.fromARGB(130, 255, 255, 255)),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"${controller.gpsDateTime} (UTC)",
|
||||
style: const TextStyle(fontSize: 10.0),
|
||||
),
|
||||
const Divider(
|
||||
height: 5.0,
|
||||
color: Colors.black,
|
||||
),
|
||||
Text(
|
||||
"EovX: ${controller.formatEov.format(controller.eov.value.Y)}"),
|
||||
Text(
|
||||
"EovY: ${controller.formatEov.format(controller.eov.value.X)}"),
|
||||
Text("Alt: ${controller.gpsAltitude} (m)"),
|
||||
const Divider(
|
||||
height: 5.0,
|
||||
color: Colors.black,
|
||||
),
|
||||
Text(
|
||||
"Hor. error: ${max(controller.gpsLatitudeError.value, controller.gpsLongitudeError.value)} (m)",
|
||||
style: const TextStyle(fontSize: 14.0),
|
||||
),
|
||||
Text(
|
||||
"Vert. error: ${controller.gpsAltitudeError} (m)",
|
||||
style: const TextStyle(fontSize: 14.0),
|
||||
),
|
||||
const Divider(
|
||||
height: 5.0,
|
||||
color: Colors.black,
|
||||
),
|
||||
Text(
|
||||
"GPS quality -> ${controller.getGpsQualityIndicator(quality: controller.gpsQuality.value)} ",
|
||||
style: const TextStyle(fontSize: 8.0),
|
||||
),
|
||||
controller.ntripIsConnected.value
|
||||
? Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Divider(
|
||||
height: 5.0,
|
||||
color: Colors.black,
|
||||
),
|
||||
Text(
|
||||
"Ntrip ${controller.ntripReceivedData} byte(s) (${controller.ntripDataPacketNumbers})",
|
||||
style:
|
||||
const TextStyle(fontSize: 10.0),
|
||||
),
|
||||
Text(
|
||||
"GGA last send: ${controller.ggaSendLastTimeStr} (${controller.ggaSenDataPacketNumber})",
|
||||
style:
|
||||
const TextStyle(fontSize: 10.0),
|
||||
),
|
||||
],
|
||||
)
|
||||
: const SizedBox(
|
||||
width: 0.0,
|
||||
height: 0.0,
|
||||
)
|
||||
],
|
||||
)),
|
||||
],
|
||||
),
|
||||
)
|
||||
: const SizedBox(),
|
||||
),
|
||||
Expanded(
|
||||
child: Stack(
|
||||
children: [
|
||||
Obx(
|
||||
() => controller.mapIsInitialized.value
|
||||
? FlutterMap(
|
||||
mapController: controller.mapController,
|
||||
options: MapOptions(
|
||||
initialCenter: LatLng(
|
||||
controller.currentLatitude.value,
|
||||
controller.currentLongitude.value),
|
||||
maxZoom: 25,
|
||||
initialZoom: controller.currentZoom.value,
|
||||
),
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate:
|
||||
'http://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}',
|
||||
subdomains: const ['mt0', 'mt1', 'mt2', 'mt3'],
|
||||
maxNativeZoom: 18,
|
||||
// urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
// userAgentPackageName: 'hu.app_dev.terepi_seged',
|
||||
),
|
||||
MarkerLayer(
|
||||
markers: controller.pointNotesMarker,
|
||||
),
|
||||
MarkerLayer(
|
||||
markers: controller.currentLocationMarker),
|
||||
MarkerLayer(markers: controller.parser.markers),
|
||||
MarkerLayer(
|
||||
markers: controller.pointsToMeasureMarker),
|
||||
// PolylineLayer(
|
||||
// polylines: controller.parser.polylines),
|
||||
PolyWidgetLayer(
|
||||
polyWidgets: controller.pointsToMeasureLabel)
|
||||
],
|
||||
)
|
||||
: const Center(child: CircularProgressIndicator()),
|
||||
),
|
||||
// Obx(
|
||||
// () => controller.gpsIsConnected.value
|
||||
// ? Positioned(
|
||||
// left: 4.0,
|
||||
// top: 4.0,
|
||||
// child: Container(
|
||||
// width: 170.0,
|
||||
// // height: 160.0,
|
||||
// decoration: BoxDecoration(
|
||||
// border: Border.all(
|
||||
// width: 2.0,
|
||||
// color: const Color.fromARGB(
|
||||
// 130, 255, 255, 255)),
|
||||
// color:
|
||||
// const Color.fromARGB(130, 255, 255, 255)),
|
||||
// child: Column(
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text(
|
||||
// "${controller.gpsDateTime} (UTC)",
|
||||
// style: const TextStyle(fontSize: 10.0),
|
||||
// ),
|
||||
// const Divider(
|
||||
// height: 5.0,
|
||||
// color: Colors.black,
|
||||
// ),
|
||||
// Text(
|
||||
// "EovX: ${controller.formatEov.format(controller.eov.value.Y)}"),
|
||||
// Text(
|
||||
// "EovY: ${controller.formatEov.format(controller.eov.value.X)}"),
|
||||
// Text("Alt: ${controller.gpsAltitude} (m)"),
|
||||
// const Divider(
|
||||
// height: 5.0,
|
||||
// color: Colors.black,
|
||||
// ),
|
||||
// Text(
|
||||
// "Hor. error: ${max(controller.gpsLatitudeError.value, controller.gpsLongitudeError.value)} (m)",
|
||||
// style: const TextStyle(fontSize: 14.0),
|
||||
// ),
|
||||
// Text(
|
||||
// "Vert. error: ${controller.gpsAltitudeError} (m)",
|
||||
// style: const TextStyle(fontSize: 14.0),
|
||||
// ),
|
||||
// const Divider(
|
||||
// height: 5.0,
|
||||
// color: Colors.black,
|
||||
// ),
|
||||
// Text(
|
||||
// "GPS quality -> ${controller.getGpsQualityIndicator(quality: controller.gpsQuality.value)} ",
|
||||
// style: const TextStyle(fontSize: 8.0),
|
||||
// ),
|
||||
// controller.ntripIsConnected.value
|
||||
// ? Column(
|
||||
// crossAxisAlignment:
|
||||
// CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// const Divider(
|
||||
// height: 5.0,
|
||||
// color: Colors.black,
|
||||
// ),
|
||||
// Text(
|
||||
// "Ntrip ${controller.ntripReceivedData} byte(s) (${controller.ntripDataPacketNumbers})",
|
||||
// style: const TextStyle(
|
||||
// fontSize: 10.0),
|
||||
// ),
|
||||
// Text(
|
||||
// "GGA last send: ${controller.ggaSendLastTimeStr} (${controller.ggaSenDataPacketNumber})",
|
||||
// style: const TextStyle(
|
||||
// fontSize: 10.0),
|
||||
// ),
|
||||
// ],
|
||||
// )
|
||||
// : const SizedBox(
|
||||
// width: 0.0,
|
||||
// height: 0.0,
|
||||
// )
|
||||
// ],
|
||||
// )),
|
||||
// )
|
||||
// : const Positioned(
|
||||
// child: SizedBox(
|
||||
// width: 0.0,
|
||||
// height: 0.0,
|
||||
// )),
|
||||
// )
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
// bottomNavigationBar: Container(
|
||||
// padding: const EdgeInsets.all(12),
|
||||
// margin: const EdgeInsets.symmetric(horizontal: 24),
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.black.withOpacity(0.5),
|
||||
// borderRadius: const BorderRadius.all(Radius.circular(24))),
|
||||
// child: Row(
|
||||
// children: [
|
||||
// GestureDetector(
|
||||
// onTap: () {
|
||||
// gpsTrigger.change(true);
|
||||
// Future.delayed(const Duration(seconds: 1), () {
|
||||
// gpsTrigger.change(false);
|
||||
// });
|
||||
// // controller.onBottomNavigationBarTap(0);
|
||||
// Get.to(() => const MapAddPointDialog(),
|
||||
// fullscreenDialog: true,
|
||||
// transition: Transition.downToUp,
|
||||
// duration: const Duration(milliseconds: 600));
|
||||
// },
|
||||
// child: SizedBox(
|
||||
// height: 36,
|
||||
// width: 36,
|
||||
// child: RiveAnimation.asset(
|
||||
// "assets/RiveAssets/travel_icons_pack.riv",
|
||||
// artboard: "GPS", onInit: (artboard) {
|
||||
// StateMachineController controllerRive =
|
||||
// RiveUtils.getRiveController(artboard,
|
||||
// stateMachineName: "gps_interactivity");
|
||||
// gpsTrigger = controllerRive.findSMI("active") as SMIBool;
|
||||
// }),
|
||||
// ),
|
||||
// )
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
floatingActionButtonLocation: FloatingActionButtonLocation.startFloat,
|
||||
floatingActionButton: Wrap(
|
||||
direction: Axis.horizontal,
|
||||
children: [
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
controller.mapZoomOut();
|
||||
},
|
||||
heroTag: 'ZoomOut',
|
||||
tooltip: 'Zoom out',
|
||||
child: const Icon(Icons.remove_circle_outline_rounded),
|
||||
),
|
||||
const SizedBox(
|
||||
width: 15,
|
||||
),
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
controller.mapZoomIn();
|
||||
},
|
||||
heroTag: 'ZoomIn',
|
||||
tooltip: 'Zoom in',
|
||||
child: const Icon(Icons.add_circle_outline_rounded),
|
||||
),
|
||||
const SizedBox(width: 15.0),
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
// controller.isMapMoveToCenter();
|
||||
controller.setIsMapMoveToCenter();
|
||||
},
|
||||
heroTag: 'Center map',
|
||||
tooltip: 'Center map',
|
||||
child: Obx(
|
||||
() => Icon(Icons.center_focus_strong,
|
||||
color: controller.isMapMoveToCenter.value
|
||||
? Colors.green
|
||||
: Colors.red),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width: 15.0,
|
||||
),
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
// controller.addMeasuredPoint();
|
||||
// controller.onBottomNavigationBarTap(0);
|
||||
controller.showAddPointDialog();
|
||||
},
|
||||
heroTag: 'Pont bemérése',
|
||||
tooltip: 'Pont bemérése',
|
||||
child: const Icon(Icons.flag_sharp),
|
||||
),
|
||||
const SizedBox(
|
||||
width: 15.0,
|
||||
),
|
||||
FloatingActionButton(
|
||||
onPressed: () {
|
||||
// controller.isMapMoveToCenter();
|
||||
// controller.addMeasuredPoint();
|
||||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
|
||||
content: Text(
|
||||
"Fejlesztlés alatt",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
backgroundColor: Colors.black54,
|
||||
));
|
||||
},
|
||||
heroTag: 'Database test',
|
||||
tooltip: 'Pont bemérése',
|
||||
child: const Icon(Icons.dataset),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,362 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/controllers/map_survey_controller.dart';
|
||||
|
||||
class SettingsDialog extends StatelessWidget {
|
||||
final controller = Get.find<MapSurveyController>();
|
||||
SettingsDialog({super.key});
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: ListView(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
if (controller.ntripUsernameController.text.isNotEmpty) {
|
||||
controller.ntripUserName.value =
|
||||
controller.ntripUsernameController.text;
|
||||
controller.saveNtripUserName(
|
||||
controller.ntripUsernameController.text);
|
||||
if (controller
|
||||
.ntripPasswordController.text.isNotEmpty) {
|
||||
controller.ntripPassword.value =
|
||||
controller.ntripPasswordController.text;
|
||||
controller.saveNtripPassword(
|
||||
controller.ntripPasswordController.text);
|
||||
}
|
||||
}
|
||||
Get.back();
|
||||
},
|
||||
icon: const Icon(Icons.close)),
|
||||
TextButton(
|
||||
style: ButtonStyle(
|
||||
overlayColor:
|
||||
MaterialStateProperty.all(Colors.transparent)),
|
||||
onPressed: () {
|
||||
if (controller.ntripUsernameController.text.isNotEmpty) {
|
||||
controller.ntripUserName.value =
|
||||
controller.ntripUsernameController.text;
|
||||
controller.saveNtripUserName(
|
||||
controller.ntripUsernameController.text);
|
||||
if (controller
|
||||
.ntripPasswordController.text.isNotEmpty) {
|
||||
controller.ntripPassword.value =
|
||||
controller.ntripPasswordController.text;
|
||||
controller.saveNtripPassword(
|
||||
controller.ntripPasswordController.text);
|
||||
}
|
||||
}
|
||||
Get.back();
|
||||
},
|
||||
child: const Text(
|
||||
'Bezár',
|
||||
style: TextStyle(color: Colors.blue, fontSize: 14.0),
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 40.0),
|
||||
child: Text(
|
||||
'Beállítások',
|
||||
style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 40.0),
|
||||
child: Text(
|
||||
'GPS vevő',
|
||||
style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
Obx(() => Column(children: [
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-BE6A'),
|
||||
value: '10:06:1C:97:BE:6A',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-BE6A';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-BE6A');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-1DC6'),
|
||||
value: 'E8:31:CD:16:1D:C6',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-1DC6';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-1DC6');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-9C3A'),
|
||||
value: '08:3A:8D:14:9C:3A',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-9C3A';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-9C3A');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-72C2'),
|
||||
value: '10:06:1C:97:72:C2',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-72C2';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-72C2');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-FE16'),
|
||||
value: '10:06:1C:9F:FE:16',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-FE16';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-FE16');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-3B0A'),
|
||||
value: '10:C6:1C:9E:3B:0A',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-3B0A';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-3B0A');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-7FEA'),
|
||||
value: '10:06:1C:9C:7F:EA',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-7FEA';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-7FEA');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-A39E'),
|
||||
value: '10:06:1C:97:A3:9E',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-A39E';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-A39E');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-FF4E'),
|
||||
value: '98:CD:AC:62:FF:4E',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-FF4E';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-FF4E');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-8BB2'),
|
||||
value: 'E8:31:CD:14:8B:B2',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-8BB2';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-8BB2');
|
||||
}),
|
||||
RadioListTile(
|
||||
title: Text('TiGNSS Rover-FF36'),
|
||||
value: '98:CD:AC:62:FF:36',
|
||||
groupValue: controller.gpsAddress.value,
|
||||
onChanged: (value) {
|
||||
controller.gpsAddress.value = value!;
|
||||
controller.gpsName.value = 'TiGNSS Rover-FF36';
|
||||
controller.saveGpsAddress(value);
|
||||
controller.saveGpsName('TiGNSS Rover-FF36');
|
||||
})
|
||||
])),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20),
|
||||
child: Divider(
|
||||
height: 5,
|
||||
),
|
||||
),
|
||||
// const SizedBox(height: 5),
|
||||
// const Padding(
|
||||
// padding: EdgeInsets.symmetric(horizontal: 40.0),
|
||||
// child: Text(
|
||||
// 'Bemért pont azonosítója:',
|
||||
// style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500),
|
||||
// ),
|
||||
// ),
|
||||
// const SizedBox(height: 4),
|
||||
// Padding(
|
||||
// padding: const EdgeInsets.symmetric(horizontal: 40),
|
||||
// child: Row(
|
||||
// children: [
|
||||
// Flexible(
|
||||
// child: TextField(
|
||||
// controller: controller.pointPrefixController,
|
||||
// decoration: const InputDecoration(
|
||||
// border: OutlineInputBorder(), labelText: 'Előtag'),
|
||||
// ),
|
||||
// ),
|
||||
// const Padding(
|
||||
// padding: EdgeInsets.symmetric(horizontal: 10.0),
|
||||
// child: Text(
|
||||
// 'Eredeti azonosító',
|
||||
// style: TextStyle(fontSize: 12.0),
|
||||
// ),
|
||||
// ),
|
||||
// Flexible(
|
||||
// child: TextField(
|
||||
// controller: controller.pointPostfixController,
|
||||
// decoration: const InputDecoration(
|
||||
// border: OutlineInputBorder(), labelText: 'Utótag'),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
const SizedBox(height: 5),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Text(
|
||||
'Mérés iránya:',
|
||||
style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
Obx(
|
||||
() => Column(children: [
|
||||
RadioListTile<bool>(
|
||||
title: Text('Növekvő'),
|
||||
value: true,
|
||||
groupValue: controller.pointMeasuringDirectionForward.value,
|
||||
onChanged: (value) {
|
||||
controller.pointMeasuringDirectionForward.value = value!;
|
||||
}),
|
||||
RadioListTile<bool>(
|
||||
title: Text('Csökkenő'),
|
||||
value: false,
|
||||
groupValue: controller.pointMeasuringDirectionForward.value,
|
||||
onChanged: (value) {
|
||||
controller.pointMeasuringDirectionForward.value = value!;
|
||||
})
|
||||
]),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20),
|
||||
child: Divider(
|
||||
height: 5,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 5),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Text(
|
||||
'Kitűzött pont azonostója:',
|
||||
style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
child: SizedBox(
|
||||
height: 32,
|
||||
width: double.infinity,
|
||||
child: Row(
|
||||
children: [
|
||||
Flexible(
|
||||
child: TextField(
|
||||
controller: controller.pointPrefixController,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(), labelText: 'Előtag'),
|
||||
),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.0),
|
||||
child: Text(
|
||||
'Eredeti azonosító',
|
||||
style: TextStyle(fontSize: 12.0),
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
child: TextField(
|
||||
controller: controller.pointPostfixController,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(), labelText: 'Utótag'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(left: 20, top: 8),
|
||||
child: Text(
|
||||
'Például: előtag: 6, utótag: -bp, eredeti azonositó: 1002 -> 61002-bp',
|
||||
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w400))),
|
||||
const SizedBox(height: 15),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20),
|
||||
child: Divider(
|
||||
height: 5,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 5),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Text(
|
||||
'Ntrip szolgáltatás:',
|
||||
style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 5),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Column(children: [
|
||||
SizedBox(
|
||||
height: 40,
|
||||
child: TextField(
|
||||
controller: controller.ntripUsernameController,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Felhasználónév',
|
||||
icon: Icon(Icons.account_circle_rounded)),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
child: TextField(
|
||||
obscureText: true,
|
||||
enableSuggestions: false,
|
||||
autocorrect: false,
|
||||
controller: controller.ntripPasswordController,
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Jelszó',
|
||||
icon: Icon(
|
||||
Icons.lock,
|
||||
)),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20)
|
||||
]),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user