液压夯分支

This commit is contained in:
刘媛 2024-11-18 14:48:54 +08:00
parent 94abe69ac5
commit b300935498
22 changed files with 1090 additions and 893 deletions

View File

@ -1,4 +1,5 @@
# This is a generated file; do not edit or check into version control. # This is a generated file; do not edit or check into version control.
device_info_plus=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\device_info_plus-11.1.1\\
flutter_webrtc=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\flutter_webrtc-0.9.48+hotfix.1\\ flutter_webrtc=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\flutter_webrtc-0.9.48+hotfix.1\\
libserialport=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\git\\libserialport-d6d27ef7aaf89e4dfa026db0c50dd3053c546710\\ libserialport=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\git\\libserialport-d6d27ef7aaf89e4dfa026db0c50dd3053c546710\\
open_settings=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\open_settings-2.0.2\\ open_settings=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\open_settings-2.0.2\\
@ -12,6 +13,6 @@ permission_handler_android=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\
permission_handler_apple=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_apple-9.4.5\\ permission_handler_apple=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_apple-9.4.5\\
permission_handler_html=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_html-0.1.3+2\\ permission_handler_html=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_html-0.1.3+2\\
permission_handler_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_windows-0.2.1\\ permission_handler_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_windows-0.2.1\\
quick_blue=D:\\ly\\dart\\A\\new\\pile_nav_new\\plugins\\quick_blue\\ quick_blue=D:\\ly\\dart\\A\\new\\hy_tamping\\plugins\\quick_blue\\
wifi_iot=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_iot-0.3.19+1\\ wifi_iot=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_iot-0.3.19+1\\
wifi_scan=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_scan-0.4.1+1\\ wifi_scan=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_scan-0.4.1+1\\

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,4 @@
import 'dart:async'; import 'dart:async';
import 'dart:math';
import 'dart:developer' as dev; import 'dart:developer' as dev;
import 'package:cpnav/pages/setting/setting_controller.dart'; import 'package:cpnav/pages/setting/setting_controller.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -30,8 +29,8 @@ class GnssController extends GetxController {
var offsetangle = 0.0.obs; //线 var offsetangle = 0.0.obs; //线
late final CoordTrans coordTrans; late final CoordTrans coordTrans;
RecordEntity? lastPilePoint; RecordEntity? lastPilePoint;
var _dx = 0.0; // var _dx = 0.0;
var _dy = 0.0; // var _dy = 0.0;
Timer? timer; Timer? timer;
checkDistance() { checkDistance() {
if (DateTime.now().millisecondsSinceEpoch - if (DateTime.now().millisecondsSinceEpoch -
@ -84,10 +83,10 @@ class GnssController extends GetxController {
image: "", image: "",
); );
} }
if (device.x.value == 0 && device.y.value == 0) { // if (device.x.value == 0 && device.y.value == 0) {
device.x.value = 3790621.123; // device.x.value = 3790621.123;
device.y.value = 577052.547; // device.y.value = 577052.547;
} // }
// device = DeviceItem( // device = DeviceItem(
// name: 'GNSS', // name: 'GNSS',
// tid: 1001, // tid: 1001,
@ -108,40 +107,40 @@ class GnssController extends GetxController {
// pilerCenter = Pos3D(4196544.959, 517639.709, 0.0); // pilerCenter = Pos3D(4196544.959, 517639.709, 0.0);
// //
timer = Timer.periodic(const Duration(seconds: 1), (Timer timer) { // timer = Timer.periodic(const Duration(seconds: 1), (Timer timer) {
if (lastPilePoint != aimcontroller.selectedPilePoint) { // if (lastPilePoint != aimcontroller.selectedPilePoint) {
lastPilePoint = aimcontroller.selectedPilePoint; // lastPilePoint = aimcontroller.selectedPilePoint;
if (aimcontroller.selectedPilePoint != null) { // if (aimcontroller.selectedPilePoint != null) {
var dx = device.x.value - aimcontroller.selectedPilePoint!.x; // var dx = device.x.value - aimcontroller.selectedPilePoint!.x;
var dy = device.y.value - aimcontroller.selectedPilePoint!.y; // var dy = device.y.value - aimcontroller.selectedPilePoint!.y;
var distance = sqrt(dx * dx + dy * dy); // var distance = sqrt(dx * dx + dy * dy);
if (distance > 2) { // if (distance > 2) {
dx = (aimcontroller.selectedPilePoint!.x - device.x.value) / // dx = (aimcontroller.selectedPilePoint!.x - device.x.value) /
(distance / 2); // (distance / 2);
dy = (aimcontroller.selectedPilePoint!.y - device.y.value) / // dy = (aimcontroller.selectedPilePoint!.y - device.y.value) /
(distance / 2); // (distance / 2);
device.x.value = aimcontroller.selectedPilePoint!.x + dx; // device.x.value = aimcontroller.selectedPilePoint!.x + dx;
device.y.value = aimcontroller.selectedPilePoint!.y + dy; // device.y.value = aimcontroller.selectedPilePoint!.y + dy;
} // }
_dx = -dx / 10; // _dx = -dx / 10;
_dy = -dy / 10; // _dy = -dy / 10;
} // }
}
// if ((aimcontroller.selectedPilePoint!.x - device.x).abs() > _dx.abs()) {
device.x.value += _dx;
device.y.value += _dy;
// } else {
// device.x = aimcontroller.selectedPilePoint!.x;
// device.y = aimcontroller.selectedPilePoint!.y;
// } // }
// device.x += 0.05; // // if ((aimcontroller.selectedPilePoint!.x - device.x).abs() > _dx.abs()) {
// device.y += 0.05; // device.x.value += _dx;
device.rotation.value += pi / 180; // 0-360 // device.y.value += _dy;
device.update.value++; // // } else {
checkDistance(); // // device.x = aimcontroller.selectedPilePoint!.x;
}); // // device.y = aimcontroller.selectedPilePoint!.y;
// // }
// // device.x += 0.05;
// // device.y += 0.05;
// device.rotation.value += pi / 180; // 0-360
// device.update.value++;
// checkDistance();
// });
gnss = Gnss(port: "/dev/ttysWK2", baudrate: 115200); gnss = Gnss(port: "/dev/ttysWK2", baudrate: 115200);
// gnss = Gnss(port: "COM1", baudrate: 115200); // gnss = Gnss(port: "COM1", baudrate: 115200);
@ -150,7 +149,7 @@ class GnssController extends GetxController {
} catch (e) { } catch (e) {
scaffoldMessengerKey.currentState?.showSnackBar( scaffoldMessengerKey.currentState?.showSnackBar(
SnackBar( SnackBar(
content: Text('发生错误: ${e.toString()}'), content: Text('发生错误gnss: ${e.toString()}'),
duration: const Duration(seconds: 25), duration: const Duration(seconds: 25),
backgroundColor: Colors.red, backgroundColor: Colors.red,
), ),

View File

@ -13,13 +13,12 @@ import 'pages/history/history_record.dart';
import 'pages/login/login_page.dart'; import 'pages/login/login_page.dart';
import 'pages/login/my_routes.dart'; import 'pages/login/my_routes.dart';
import 'pages/pass_track/view.dart'; import 'pages/pass_track/view.dart';
import 'pages/real/index.dart';
import 'pages/real/real_controller.dart'; import 'pages/real/real_controller.dart';
import 'pages/setting/child_pages/antenna/antenna_setting.dart'; import 'pages/setting/child_pages/antenna/antenna_setting.dart';
import 'pages/setting/child_pages/connect/config/socket_setting.dart';
import 'pages/setting/setting_controller.dart'; import 'pages/setting/setting_controller.dart';
import 'pages/setting/setting_page.dart'; import 'pages/setting/setting_page.dart';
import 'pages/setting/child_pages/XyChange/connect.dart';
import 'pages/task/taskcontroller.dart'; import 'pages/task/taskcontroller.dart';
import 'service/user/loginprefs.dart'; import 'service/user/loginprefs.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
@ -31,8 +30,8 @@ import '../../controllers/gnss_controller.dart';
final AppController appcontroller = Get.put(AppController()); final AppController appcontroller = Get.put(AppController());
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey =
GlobalKey<ScaffoldMessengerState>(); GlobalKey<ScaffoldMessengerState>();
Connect connect = Connect(); // Connect connect = Connect();
SocketSetting socket = SocketSetting();
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); //
@ -42,11 +41,12 @@ void main() async {
Get.put(PhoneLoginController()); Get.put(PhoneLoginController());
Get.put(ScenceMapController()); Get.put(ScenceMapController());
Get.put(AimPointerController()); Get.put(AimPointerController());
Get.put(RealController());
LoginPrefs loginPrefs = LoginPrefs(); LoginPrefs loginPrefs = LoginPrefs();
String value = String value =
await loginPrefs.init(); // await await等待异步方法执行完毕 await loginPrefs.init(); // await await等待异步方法执行完毕
if ('ok' == value) { if ('ok' == value) {
// connect.init(); socket.connect();
// loginPrefs.removeToken(); // // loginPrefs.removeToken(); //
runApp(const MyApp()); runApp(const MyApp());
} }
@ -100,13 +100,13 @@ class _MyHomePageState extends State<MyHomePage> {
SettingController settingController = Get.put(SettingController()); SettingController settingController = Get.put(SettingController());
SchedulerBinding.instance.addPostFrameCallback((_) async { SchedulerBinding.instance.addPostFrameCallback((_) async {
settingController.getDeviceId(context);
await loadData(settingController); await loadData(settingController);
setState(() { setState(() {
isInitialized = settingController.isInitialized; isInitialized = settingController.isInitialized;
Get.put(PlumDataController()); Get.put(PlumDataController());
Get.put(AntennaController()); Get.put(AntennaController());
Get.put(TaskController()); Get.put(TaskController());
Get.put(RealController());
Get.put(GnssController()); Get.put(GnssController());
}); });
}); });

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import '../real/component/chart.dart';
class MyLineChart extends StatefulWidget { class MyLineChart extends StatefulWidget {
final int pileId; final int pileId;
@ -32,9 +31,10 @@ class _MyLineChartState extends State<MyLineChart> {
), ),
body: SizedBox( body: SizedBox(
height: size.height - 30, height: size.height - 30,
child: ProcessChart( // child: ProcessChart(
pileId: widget.pileId, // pileId: widget.pileId,
)), // )
),
); );
} }
} }

View File

@ -5,7 +5,6 @@ import 'package:intl/intl.dart';
import 'package:scence_map/record_entity.dart'; import 'package:scence_map/record_entity.dart';
import '../../service/base.dart'; import '../../service/base.dart';
import '../setting/project/model.dart'; import '../setting/project/model.dart';
import 'line_chart.dart';
class RecordDataSourceAsync extends AsyncDataTableSource { class RecordDataSourceAsync extends AsyncDataTableSource {
bool _empty = false; bool _empty = false;

View File

@ -51,7 +51,7 @@ class PassTrackController extends GetxController {
} }
} }
loadCoorTrans() async {}
loadSideLine() async { loadSideLine() async {
mapController.sideLinListeMap.clear(); mapController.sideLinListeMap.clear();
@ -136,7 +136,7 @@ class PassTrackController extends GetxController {
String now = DateFormat('yyyy-MM-dd').format(DateTime.now()); String now = DateFormat('yyyy-MM-dd').format(DateTime.now());
if ((currentPoint == null && date.value == now) || if ((currentPoint == null && date.value == now) ||
(DateFormat('yyyy-MM-dd').format(currentPoint!.startTime) == now)) { (DateFormat('yyyy-MM-dd').format(currentPoint!.startTime) == now)) {
log("${currentPoint?.startTime},now:$now"); // log("${currentPoint?.startTime},now:$now");
scaffoldMessengerKey.currentState?.showSnackBar( scaffoldMessengerKey.currentState?.showSnackBar(
SnackBar( SnackBar(
content: Text('提示: ${date.value}暂无施工数据'), content: Text('提示: ${date.value}暂无施工数据'),

View File

@ -1,368 +1,368 @@
import 'dart:math'; // import 'dart:math';
import 'dart:developer' as dev; // import 'dart:developer' as dev;
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; // import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; // import 'package:flutter/services.dart';
import 'package:fl_chart/fl_chart.dart'; // import 'package:fl_chart/fl_chart.dart';
import 'package:intl/intl.dart'; // import 'package:intl/intl.dart';
import '../../../service/base.dart'; // import '../../../service/base.dart';
import '../../setting/project/model.dart'; // import '../../setting/project/model.dart';
import '../process.dart'; // import '../process.dart';
class ProcessChart extends StatefulWidget { // class ProcessChart extends StatefulWidget {
final int pileId; // final int pileId;
const ProcessChart({super.key, required this.pileId}); // const ProcessChart({super.key, required this.pileId});
@override // @override
State<ProcessChart> createState() => _ProcessChartState(); // State<ProcessChart> createState() => _ProcessChartState();
} // }
class _ProcessChartState extends State<ProcessChart> { // class _ProcessChartState extends State<ProcessChart> {
List<ProcessEntity> processList = []; // List<ProcessEntity> processList = [];
List<Widget> chartTitleWidget = []; // List<Widget> chartTitleWidget = [];
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
fetchData(); // fetchData();
} // }
int maxX = 5; // int maxX = 5;
int maxYL = 14; // // int maxYL = 14; //
int maxYR = 0; //10cm // int maxYR = 0; //10cm
ChartData chartData = ChartData([]); // ChartData chartData = ChartData([]);
void fetchData() async { // void fetchData() async {
try { // try {
SchedulerBinding.instance.addPostFrameCallback((_) async { // SchedulerBinding.instance.addPostFrameCallback((_) async {
ProjectModel project = settingController.currentProject.value!; // ProjectModel project = settingController.currentProject.value!;
String projType = settingController.projType; // String projType = settingController.projType;
// // //
List detailCdate = await services.getProcessData( // List detailCdate = await services.getProcessData(
widget.pileId, // widget.pileId,
project.projCode, // project.projCode,
projType, // projType,
); // );
setState(() { // setState(() {
double ten1Max = 0; // double ten1Max = 0;
double ten2Max = 0; // double ten2Max = 0;
for (var i = 0; i < detailCdate.length; i++) { // for (var i = 0; i < detailCdate.length; i++) {
ProcessEntity process = ProcessEntity.fromJson(detailCdate[i]); // ProcessEntity process = ProcessEntity.fromJson(detailCdate[i]);
processList.add(process); // processList.add(process);
// ()(10cm流量) // // ()(10cm流量)
maxYL = max(maxYL, process.depth.ceil()); // maxYL = max(maxYL, process.depth.ceil());
ten1Max = max(ten1Max, process.subtotalFlow1); // ten1Max = max(ten1Max, process.subtotalFlow1);
ten2Max = max(ten2Max, process.subtotalFlow2); // ten2Max = max(ten2Max, process.subtotalFlow2);
maxYR = max(ten2Max.ceil(), ten1Max.ceil()); // maxYR = max(ten2Max.ceil(), ten1Max.ceil());
} // }
int radtio = (maxYR / maxYL).ceil(); // int radtio = (maxYR / maxYL).ceil();
chartData = ChartData(processList, maxX, maxYL, maxYR, radtio); // chartData = ChartData(processList, maxX, maxYL, maxYR, radtio);
chartTitleWidget = chartData.chartTitleWeidget(); // chartTitleWidget = chartData.chartTitleWeidget();
}); // });
}); // });
} catch (e) { // } catch (e) {
dev.log("错误"); // dev.log("错误");
setState(() { // setState(() {
processList = []; // processList = [];
}); // });
} // }
} // }
@override // @override
void dispose() { // void dispose() {
super.dispose(); // super.dispose();
SystemChrome.setPreferredOrientations([]); // SystemChrome.setPreferredOrientations([]);
} // }
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return Stack( // return Stack(
children: [ // children: [
Positioned( // Positioned(
child: Row( // child: Row(
mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
children: chartTitleWidget)), // children: chartTitleWidget)),
LineChart(chartData.lineChart) // LineChart(chartData.lineChart)
], // ],
); // );
} // }
} // }
class ChartTileModel { // class ChartTileModel {
String title; // String title;
Color colors; // Color colors;
ChartTileModel( // ChartTileModel(
this.title, // this.title,
this.colors, // this.colors,
); // );
} // }
class ChartData { // class ChartData {
List<ProcessEntity> processList; // List<ProcessEntity> processList;
int maxX; // int maxX;
// 3 // // 3
int maxYL; // int maxYL;
int maxYR; // int maxYR;
int radtio; // int radtio;
List<ChartTileModel> chartTitle = [ // List<ChartTileModel> chartTitle = [
ChartTileModel("深度:", Colors.green), // ChartTileModel("深度:", Colors.green),
ChartTileModel("10cm流量1", Colors.pink), // ChartTileModel("10cm流量1", Colors.pink),
ChartTileModel("10cm流量2", Colors.cyan), // ChartTileModel("10cm流量2", Colors.cyan),
]; // ];
ChartData(this.processList, // ChartData(this.processList,
[this.maxX = 5, this.maxYL = 14, this.maxYR = 100, this.radtio = 8]); // [this.maxX = 5, this.maxYL = 14, this.maxYR = 100, this.radtio = 8]);
List<Widget> chartTitleWeidget() { // List<Widget> chartTitleWeidget() {
List<Widget> chartTitleWidget = []; // List<Widget> chartTitleWidget = [];
for (var i = 0; i < chartTitle.length; i++) { // for (var i = 0; i < chartTitle.length; i++) {
ChartTileModel tileModel = chartTitle[i]; // ChartTileModel tileModel = chartTitle[i];
List<Widget> item = [ // List<Widget> item = [
Text(tileModel.title), // Text(tileModel.title),
Container( // Container(
width: 13, // width: 13,
height: 8, // height: 8,
margin: const EdgeInsets.only(right: 5), // margin: const EdgeInsets.only(right: 5),
decoration: BoxDecoration(color: tileModel.colors), // decoration: BoxDecoration(color: tileModel.colors),
), // ),
const SizedBox( // const SizedBox(
width: 10, // width: 10,
height: 10, // height: 10,
), // ),
]; // ];
chartTitleWidget.addAll(item); // chartTitleWidget.addAll(item);
} // }
return chartTitleWidget; // return chartTitleWidget;
} // }
LineChartData get lineChart => LineChartData( // LineChartData get lineChart => LineChartData(
lineTouchData: lineTouchData, // lineTouchData: lineTouchData,
gridData: gridData, // gridData: gridData,
titlesData: titlesData, // titlesData: titlesData,
borderData: borderData, // borderData: borderData,
lineBarsData: lineBarsData, // lineBarsData: lineBarsData,
minX: 0, // minX: 0,
maxX: maxX.toDouble(), // maxX: maxX.toDouble(),
maxY: maxYR.toDouble(), // maxY: maxYR.toDouble(),
minY: 0, // minY: 0,
); // );
LineTouchData get lineTouchData => LineTouchData( // LineTouchData get lineTouchData => LineTouchData(
handleBuiltInTouches: true, // handleBuiltInTouches: true,
touchTooltipData: LineTouchTooltipData( // touchTooltipData: LineTouchTooltipData(
fitInsideHorizontally: true, // fitInsideHorizontally: true,
fitInsideVertically: true, // fitInsideVertically: true,
// tooltipBgColor: Colors.black38.withOpacity(0.8), // // tooltipBgColor: Colors.black38.withOpacity(0.8),
getTooltipItems: (List<LineBarSpot> touchedSpots) { // getTooltipItems: (List<LineBarSpot> touchedSpots) {
// // //
return touchedSpots.map((LineBarSpot touchedSpot) { // return touchedSpots.map((LineBarSpot touchedSpot) {
// // //
final x = touchedSpot.x; // final x = touchedSpot.x;
int index = (x / maxX * processList.length).round(); // int index = (x / maxX * processList.length).round();
ProcessEntity process = processList[index]; // ProcessEntity process = processList[index];
String lineToolValue = ""; // String lineToolValue = "";
TextStyle lineToolStyle = const TextStyle( // TextStyle lineToolStyle = const TextStyle(
color: Colors.green, // color: Colors.green,
); // );
if (touchedSpot.barIndex == 0) { // if (touchedSpot.barIndex == 0) {
lineToolValue = // lineToolValue =
"时间:${DateFormat('HH:mm:ss').format(DateTime.parse(process.recvTime)).toString()}\n深度:${process.depth}\n累计流量:${process.toatalFlow1}"; // "时间:${DateFormat('HH:mm:ss').format(DateTime.parse(process.recvTime)).toString()}\n深度:${process.depth}\n累计流量:${process.toatalFlow1}";
lineToolStyle = const TextStyle(color: Colors.green); // lineToolStyle = const TextStyle(color: Colors.green);
} else if (touchedSpot.barIndex == 1) { // } else if (touchedSpot.barIndex == 1) {
lineToolValue = "10cm流量1:${process.subtotalFlow1}"; // lineToolValue = "10cm流量1:${process.subtotalFlow1}";
lineToolStyle = const TextStyle(color: Colors.pink); // lineToolStyle = const TextStyle(color: Colors.pink);
} else if (touchedSpot.barIndex == 2) { // } else if (touchedSpot.barIndex == 2) {
lineToolValue = "10cm流量2:${process.subtotalFlow2}"; // lineToolValue = "10cm流量2:${process.subtotalFlow2}";
lineToolStyle = const TextStyle(color: Colors.cyan); // lineToolStyle = const TextStyle(color: Colors.cyan);
} // }
return LineTooltipItem(lineToolValue, lineToolStyle, // return LineTooltipItem(lineToolValue, lineToolStyle,
textAlign: TextAlign.left); // textAlign: TextAlign.left);
}).toList(); // }).toList();
}, // },
), // ),
); // );
// FlGridData get gridData => const FlGridData(show: false); // // FlGridData get gridData => const FlGridData(show: false);
// // //
FlGridData get gridData => const FlGridData(drawHorizontalLine: true); // FlGridData get gridData => const FlGridData(drawHorizontalLine: true);
// // //
FlTitlesData get titlesData => FlTitlesData( // FlTitlesData get titlesData => FlTitlesData(
bottomTitles: AxisTitles( // bottomTitles: AxisTitles(
sideTitles: bottomTitles, // sideTitles: bottomTitles,
), // ),
rightTitles: AxisTitles( // rightTitles: AxisTitles(
sideTitles: rightTitles(), // sideTitles: rightTitles(),
), // ),
topTitles: const AxisTitles( // topTitles: const AxisTitles(
sideTitles: SideTitles(showTitles: false), // sideTitles: SideTitles(showTitles: false),
), // ),
leftTitles: AxisTitles( // leftTitles: AxisTitles(
sideTitles: leftTitles(), // sideTitles: leftTitles(),
), // ),
); // );
SideTitles get bottomTitles => SideTitles( // SideTitles get bottomTitles => SideTitles(
showTitles: true, // showTitles: true,
reservedSize: 32, // reservedSize: 32,
interval: 1, // interval: 1,
getTitlesWidget: bottomTitleWidgets, // getTitlesWidget: bottomTitleWidgets,
); // );
SideTitles leftTitles() => SideTitles( // SideTitles leftTitles() => SideTitles(
getTitlesWidget: leftTitleWidgets, // getTitlesWidget: leftTitleWidgets,
showTitles: true, // showTitles: true,
interval: 1, // interval: 1,
reservedSize: 40, // reservedSize: 40,
); // );
SideTitles rightTitles() => SideTitles( // SideTitles rightTitles() => SideTitles(
getTitlesWidget: rightTitleWidgets, // getTitlesWidget: rightTitleWidgets,
showTitles: true, // showTitles: true,
interval: 1, // interval: 1,
reservedSize: 40, // reservedSize: 40,
); // );
//x轴 // //x轴
Widget bottomTitleWidgets(double value, TitleMeta meta) { // Widget bottomTitleWidgets(double value, TitleMeta meta) {
const style = TextStyle( // const style = TextStyle(
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
fontSize: 14, // fontSize: 14,
); // );
String getTimeFromIndex(int index) { // String getTimeFromIndex(int index) {
if (processList.isEmpty || index < 0 || index >= processList.length) { // if (processList.isEmpty || index < 0 || index >= processList.length) {
return ''; // return '';
} // }
return processList[index].recvTime.toString().split(" ")[1]; // return processList[index].recvTime.toString().split(" ")[1];
} // }
int index; // int index;
switch (value.toInt()) { // switch (value.toInt()) {
case 0: // case 0:
index = 0; // index = 0;
break; // break;
case 1: // case 1:
index = (processList.length / 5).round(); // index = (processList.length / 5).round();
break; // break;
case 2: // case 2:
index = (processList.length * 2 / 5).round(); // index = (processList.length * 2 / 5).round();
break; // break;
case 3: // case 3:
index = (processList.length * 3 / 5).round(); // index = (processList.length * 3 / 5).round();
break; // break;
case 4: // case 4:
index = (processList.length * 4 / 5).round(); // index = (processList.length * 4 / 5).round();
break; // break;
case 5: // case 5:
index = processList.length - 1; // index = processList.length - 1;
break; // break;
default: // default:
return SideTitleWidget( // return SideTitleWidget(
axisSide: meta.axisSide, // axisSide: meta.axisSide,
space: 10, // space: 10,
child: const Text(''), // child: const Text(''),
); // );
} // }
return SideTitleWidget( // return SideTitleWidget(
axisSide: meta.axisSide, // axisSide: meta.axisSide,
space: 10, // space: 10,
child: Text( // child: Text(
getTimeFromIndex(index), // getTimeFromIndex(index),
style: style, // style: style,
), // ),
); // );
} // }
final style = const TextStyle( // final style = const TextStyle(
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
fontSize: 14, // fontSize: 14,
); // );
//y轴 // //y轴
Widget leftTitleWidgets(double value, TitleMeta meta) { // Widget leftTitleWidgets(double value, TitleMeta meta) {
String text; // String text;
int intValue = (value).ceil(); // int intValue = (value).ceil();
if (intValue % (2 * radtio) == 0 && intValue <= maxYR) { // if (intValue % (2 * radtio) == 0 && intValue <= maxYR) {
text = (intValue / radtio).floor().toString(); // text = (intValue / radtio).floor().toString();
if (maxYR - intValue < 2 * radtio) { // if (maxYR - intValue < 2 * radtio) {
text = "深度(m)"; // text = "深度(m)";
} // }
} else { // } else {
return const Text(""); // return const Text("");
} // }
return Text(text, style: style, textAlign: TextAlign.center); // return Text(text, style: style, textAlign: TextAlign.center);
} // }
//y轴 // //y轴
Widget rightTitleWidgets(double value, TitleMeta meta) { // Widget rightTitleWidgets(double value, TitleMeta meta) {
String text; // String text;
int intValue = value.toInt(); // int intValue = value.toInt();
if (intValue >= 0 && intValue % (2 * radtio) == 0 && intValue <= maxYR) { // if (intValue >= 0 && intValue % (2 * radtio) == 0 && intValue <= maxYR) {
text = (intValue.ceil()).toString(); // text = (intValue.ceil()).toString();
if (maxYR - intValue < 2 * radtio) { // if (maxYR - intValue < 2 * radtio) {
text = "流量(L)"; // text = "流量(L)";
} // }
} else { // } else {
return Container(); // return Container();
} // }
return Text(text, style: style, textAlign: TextAlign.center); // return Text(text, style: style, textAlign: TextAlign.center);
} // }
// // //
FlBorderData get borderData => FlBorderData( // FlBorderData get borderData => FlBorderData(
show: true, // show: true,
border: const Border( // border: const Border(
bottom: BorderSide(color: Colors.grey, width: 4), // bottom: BorderSide(color: Colors.grey, width: 4),
left: BorderSide(color: Colors.transparent), // left: BorderSide(color: Colors.transparent),
right: BorderSide(color: Colors.transparent), // right: BorderSide(color: Colors.transparent),
top: BorderSide(color: Colors.transparent), // top: BorderSide(color: Colors.transparent),
), // ),
); // );
// // //
List<LineChartBarData> get lineBarsData => [ // List<LineChartBarData> get lineBarsData => [
lineChartBarDataTen1, // lineChartBarDataTen1,
lineChartBarDataTen2, // lineChartBarDataTen2,
lineChartBarDataDepth, // lineChartBarDataDepth,
]; // ];
LineChartBarData get lineChartBarDataDepth => LineChartBarData( // LineChartBarData get lineChartBarDataDepth => LineChartBarData(
isCurved: false, // isCurved: false,
color: Colors.green, // color: Colors.green,
barWidth: 3, // barWidth: 3,
isStrokeCapRound: true, // isStrokeCapRound: true,
dotData: const FlDotData(show: false), // dotData: const FlDotData(show: false),
belowBarData: BarAreaData(show: false), // belowBarData: BarAreaData(show: false),
spots: processList.map((item) { // spots: processList.map((item) {
int index = processList.indexOf(item); // int index = processList.indexOf(item);
return FlSpot( // return FlSpot(
(maxX / processList.length) * index, (item.depth * radtio)); // (maxX / processList.length) * index, (item.depth * radtio));
}).toList()); // }).toList());
LineChartBarData get lineChartBarDataTen1 => LineChartBarData( // LineChartBarData get lineChartBarDataTen1 => LineChartBarData(
isCurved: false, // isCurved: false,
color: Colors.pink, // color: Colors.pink,
barWidth: 3, // barWidth: 3,
isStrokeCapRound: true, // isStrokeCapRound: true,
dotData: const FlDotData(show: false), // dotData: const FlDotData(show: false),
belowBarData: BarAreaData( // belowBarData: BarAreaData(
show: false, // show: false,
color: Colors.pink, // color: Colors.pink,
), // ),
spots: processList.map((item) { // spots: processList.map((item) {
int index = processList.indexOf(item); // int index = processList.indexOf(item);
return FlSpot((maxX / processList.length) * index, item.subtotalFlow1); // return FlSpot((maxX / processList.length) * index, item.subtotalFlow1);
}).toList()); // }).toList());
LineChartBarData get lineChartBarDataTen2 => LineChartBarData( // LineChartBarData get lineChartBarDataTen2 => LineChartBarData(
isCurved: false, // isCurved: false,
color: Colors.cyan, // color: Colors.cyan,
barWidth: 3, // barWidth: 3,
isStrokeCapRound: true, // isStrokeCapRound: true,
dotData: const FlDotData(show: false), // dotData: const FlDotData(show: false),
belowBarData: BarAreaData(show: false), // belowBarData: BarAreaData(show: false),
spots: processList.map((item) { // spots: processList.map((item) {
int index = processList.indexOf(item); // int index = processList.indexOf(item);
return FlSpot((maxX / processList.length) * index, item.subtotalFlow2); // return FlSpot((maxX / processList.length) * index, item.subtotalFlow2);
}).toList()); // }).toList());
} // }

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'line_chart.dart';
import 'real_controller.dart'; import 'real_controller.dart';
import 'real_data.dart'; import 'real_data.dart';
@ -30,21 +29,21 @@ class Real extends StatelessWidget {
), ),
space, space,
// lineChart // lineChart
Expanded( // Expanded(
flex: 1, // flex: 1,
child: Column( // child: Column(
children: [ // children: [
Expanded(child: RealChart()), // Expanded(child: RealChart()),
Obx(() => Slider( // Obx(() => Slider(
value: realController.startIndex.toDouble(), // value: realController.startIndex.toDouble(),
onChanged: (newvalue) => // onChanged: (newvalue) =>
realController.updateSlider(newvalue), // realController.updateSlider(newvalue),
min: 0, // min: 0,
max: realController.processList.length.toDouble(), // max: realController.processList.length.toDouble(),
)), // )),
], // ],
), // ),
) // )
]; ];
if (isPortrait) { if (isPortrait) {
return Container( return Container(

View File

@ -1,113 +1,113 @@
// ignore_for_file: must_be_immutable // // ignore_for_file: must_be_immutable
import 'package:fl_chart/fl_chart.dart'; // import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:get/get.dart'; // import 'package:get/get.dart';
import 'package:intl/intl.dart'; // import 'package:intl/intl.dart';
import 'component/chart.dart'; // import 'component/chart.dart';
import 'process.dart'; // import 'process.dart';
import 'real_controller.dart'; // import 'real_controller.dart';
// // //
class RealChart extends StatelessWidget { // class RealChart extends StatelessWidget {
RealChart({super.key}); // RealChart({super.key});
ChartData chartData = ChartData( // ChartData chartData = ChartData(
[], // [],
); // );
final RealController realController = Get.put(RealController()); // final RealController realController = Get.put(RealController());
List<ProcessEntity> processList = []; // List<ProcessEntity> processList = [];
format(double value, [int fix = 2]) { // format(double value, [int fix = 2]) {
return double.parse(value.toStringAsFixed(fix)); // return double.parse(value.toStringAsFixed(fix));
} // }
List<ProcessEntity> cache = []; // List<ProcessEntity> cache = [];
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
// // //
int showlength = 30; // int showlength = 30;
ever(realController.depth, (newValue) { // ever(realController.depth, (newValue) {
ProcessEntity process = ProcessEntity( // ProcessEntity process = ProcessEntity(
recvTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()), // recvTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()),
pileId: realController.pileId.value, // pileId: realController.pileId.value,
utc: 0, // utc: 0,
tid: 100, // tid: 100,
toatalFlow1: format(realController.totalFlow1.value), // toatalFlow1: format(realController.totalFlow1.value),
toatalFlow2: format(realController.totalFlow2.value), // toatalFlow2: format(realController.totalFlow2.value),
subtotalFlow1: format(realController.subtotalFlow1.value), // subtotalFlow1: format(realController.subtotalFlow1.value),
subtotalFlow2: format(realController.subtotalFlow2.value), // subtotalFlow2: format(realController.subtotalFlow2.value),
depth: format(realController.depth.value), // depth: format(realController.depth.value),
); // );
processList.add(process); // processList.add(process);
if (realController.sliderTime != null) { // if (realController.sliderTime != null) {
if (DateTime.now().difference(realController.sliderTime!).inSeconds > // if (DateTime.now().difference(realController.sliderTime!).inSeconds >
10) { // 10) {
realController.updateProcessList(processList); // realController.updateProcessList(processList);
realController.updateSlider(processList.length.toDouble(), false); // realController.updateSlider(processList.length.toDouble(), false);
} else { // } else {
return; // return;
} // }
} else { // } else {
realController.updateProcessList(processList); // realController.updateProcessList(processList);
if (realController.startIndex.value != processList.length) { // if (realController.startIndex.value != processList.length) {
realController.updateSlider(processList.length.toDouble(), false); // realController.updateSlider(processList.length.toDouble(), false);
} // }
} // }
}); // });
ever(realController.pileId, (newValue) { // ever(realController.pileId, (newValue) {
ProcessEntity process = ProcessEntity( // ProcessEntity process = ProcessEntity(
recvTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()), // recvTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()),
pileId: realController.pileId.value, // pileId: realController.pileId.value,
utc: 0, // utc: 0,
tid: 100, // tid: 100,
toatalFlow1: format(realController.totalFlow1.value), // toatalFlow1: format(realController.totalFlow1.value),
toatalFlow2: format(realController.totalFlow2.value), // toatalFlow2: format(realController.totalFlow2.value),
subtotalFlow1: format(realController.subtotalFlow1.value), // subtotalFlow1: format(realController.subtotalFlow1.value),
subtotalFlow2: format(realController.subtotalFlow2.value), // subtotalFlow2: format(realController.subtotalFlow2.value),
depth: format(realController.depth.value), // depth: format(realController.depth.value),
); // );
processList.length = 0; // processList.length = 0;
processList.add(process); // processList.add(process);
realController.updateProcessList(processList.toList()); // realController.updateProcessList(processList.toList());
realController.startIndex.value = 0; // realController.startIndex.value = 0;
}); // });
List<Widget> chartTitleWidget = chartData.chartTitleWeidget(); // List<Widget> chartTitleWidget = chartData.chartTitleWeidget();
Widget chartWidget(List<ProcessEntity> processList) { // Widget chartWidget(List<ProcessEntity> processList) {
int startIndex = 0; // int startIndex = 0;
if ((realController.startIndex.value + showlength) < processList.length && // if ((realController.startIndex.value + showlength) < processList.length &&
realController.startIndex.value != 0) { // realController.startIndex.value != 0) {
startIndex = realController.startIndex.value; // startIndex = realController.startIndex.value;
} else { // } else {
startIndex = ((processList.length - showlength < 0) // startIndex = ((processList.length - showlength < 0)
? 0 // ? 0
: (processList.length - showlength)); // : (processList.length - showlength));
} // }
int endIndex = startIndex + showlength > processList.length // int endIndex = startIndex + showlength > processList.length
? processList.length // ? processList.length
: startIndex + showlength; // : startIndex + showlength;
ChartData chartData = ChartData( // ChartData chartData = ChartData(
processList.sublist(startIndex, endIndex), // processList.sublist(startIndex, endIndex),
); // );
return LineChart(chartData.lineChart); // return LineChart(chartData.lineChart);
} // }
return Column( // return Column(
children: [ // children: [
Row( // Row(
mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
children: chartTitleWidget, // children: chartTitleWidget,
), // ),
Expanded( // Expanded(
flex: 1, // flex: 1,
child: Obx( // child: Obx(
() => SizedBox(child: chartWidget(realController.processList)))) // () => SizedBox(child: chartWidget(realController.processList))))
], // ],
); // );
} // }
} // }

View File

@ -1,107 +1,134 @@
import 'dart:core'; import 'dart:core';
class ProcessEntity {
double speed;
double depth;
double tiltX;
double tiltY;
double current1;
double current2;
double toatalFlow2;
double toatalFlow1;
double subtotalFlow2;
double subtotalFlow1;
String recvTime;
// double? azimuth;
double alt = 0;
double lng = 0;
double lat = 0;
String pileId;
int utc;
int tid;
int? id;
ProcessEntity(
{this.speed = 0,
this.depth = 0,
this.tiltX = 0,
this.tiltY = 0,
this.current1 = 0,
this.current2 = 0,
this.toatalFlow2 = 0,
this.toatalFlow1 = 0,
this.subtotalFlow2 = 0,
this.subtotalFlow1 = 0,
required this.recvTime,
// this.azimuth,
this.alt = 0,
this.lng = 0,
this.lat = 0,
required this.pileId,
required this.utc,
required this.tid,
this.id});
factory ProcessEntity.fromJson(Map<String, dynamic> json) {
return ProcessEntity(
speed: (json["speed"] ?? "0").toDouble(),
depth: (json["depth"] ?? "0").toDouble(),
tiltX: (json["tilt_x"] ?? "0").toDouble(),
tiltY: (json["tilt_y"] ?? "0").toDouble(),
current1: (json["current1"] ?? "0").toDouble(),
current2: (json["current2"] ?? "0").toDouble(),
toatalFlow2: (json["toatal_flow2"] ?? "0").toDouble(),
toatalFlow1: (json["toatal_flow1"] ?? "0").toDouble(),
subtotalFlow2: (json["subtotal_flow2"] ?? "0").toDouble(),
subtotalFlow1: (json["subtotal_flow1"] ?? "0").toDouble(),
recvTime: json["recv_time"] ?? DateTime.now(),
// azimuth: (json["azimuth"] ?? "0").toDouble(),
alt: (json["ALT"] ?? "0").toDouble(),
lng: (json["LNG"] ?? "0").toDouble(),
lat: (json["LAT"] ?? "0").toDouble(),
pileId: json["pile_id"].toString(),
utc: json["UTC"],
tid: json['tid'],
id: json["id"],
);
}
}
// class ProcessEntity { // class ProcessEntity {
// // String recvTime; // double speed;
// double? azimuth; // double depth;
// double tiltX;
// double tiltY;
// double current1;
// double current2;
// double toatalFlow2;
// double toatalFlow1;
// double subtotalFlow2;
// double subtotalFlow1;
// String recvTime;
// // double? azimuth;
// double alt = 0; // double alt = 0;
// double lng = 0; // double lng = 0;
// double lat = 0; // double lat = 0;
// int tp_id; // String pileId;
// int utc; // int utc;
// int tid; // int tid;
// int? id; // int? id;
// int times;
// // impact_force
// // distance;
// // pith
// ProcessEntity( // ProcessEntity(
// {this.times = 0, // {this.speed = 0,
// this.depth = 0,
// // required this.recvTime, // this.tiltX = 0,
// this.azimuth, // this.tiltY = 0,
// this.current1 = 0,
// this.current2 = 0,
// this.toatalFlow2 = 0,
// this.toatalFlow1 = 0,
// this.subtotalFlow2 = 0,
// this.subtotalFlow1 = 0,
// required this.recvTime,
// // this.azimuth,
// this.alt = 0, // this.alt = 0,
// this.lng = 0, // this.lng = 0,
// this.lat = 0, // this.lat = 0,
// required this.tp_id, // required this.pileId,
// required this.utc, // required this.utc,
// required this.tid, // required this.tid,
// this.id}); // this.id});
// factory ProcessEntity.fromJson(Map<String, dynamic> json) { // factory ProcessEntity.fromJson(Map<String, dynamic> json) {
// return ProcessEntity( // return ProcessEntity(
// // recvTime: json["recv_time"] ?? DateTime.now(), // speed: (json["speed"] ?? "0").toDouble(),
// depth: (json["depth"] ?? "0").toDouble(),
// tiltX: (json["tilt_x"] ?? "0").toDouble(),
// tiltY: (json["tilt_y"] ?? "0").toDouble(),
// current1: (json["current1"] ?? "0").toDouble(),
// current2: (json["current2"] ?? "0").toDouble(),
// toatalFlow2: (json["toatal_flow2"] ?? "0").toDouble(),
// toatalFlow1: (json["toatal_flow1"] ?? "0").toDouble(),
// subtotalFlow2: (json["subtotal_flow2"] ?? "0").toDouble(),
// subtotalFlow1: (json["subtotal_flow1"] ?? "0").toDouble(),
// recvTime: json["recv_time"] ?? DateTime.now(),
// // azimuth: (json["azimuth"] ?? "0").toDouble(), // // azimuth: (json["azimuth"] ?? "0").toDouble(),
// alt: (json["ALT"] ?? "0").toDouble(), // alt: (json["ALT"] ?? "0").toDouble(),
// lng: (json["LNG"] ?? "0").toDouble(), // lng: (json["LNG"] ?? "0").toDouble(),
// lat: (json["LAT"] ?? "0").toDouble(), // lat: (json["LAT"] ?? "0").toDouble(),
// tp_id: json["tp_id"], // pileId: json["pile_id"].toString(),
// utc: json["UTC"], // utc: json["UTC"],
// tid: json['tid'], // tid: json['tid'],
// id: json["id"], // id: json["id"],
// ); // );
// } // }
// } // }
class ProcessEntity {
// String recvTime;
double? azimuth;
double alt = 0;
double lng = 0;
double lat = 0;
int tp_id;
int utc;
int tid;
int? id;
int times;
double height;
double speed;
// double impact_force;
List<double> impact_force;
// distance;
// pith
ProcessEntity(
{this.times = 0,
// required this.recvTime,
this.azimuth,
this.alt = 0,
this.lng = 0,
this.lat = 0,
this.height = 0,
this.speed = 0,
required this.impact_force,
required this.tp_id,
required this.utc,
required this.tid,
this.id});
factory ProcessEntity.fromJson(Map<String, dynamic> json) {
return ProcessEntity(
// recvTime: json["recv_time"] ?? DateTime.now(),
// azimuth: (json["azimuth"] ?? "0").toDouble(),
alt: (json["ALT"] ?? "0").toDouble(),
lng: (json["LNG"] ?? "0").toDouble(),
lat: (json["LAT"] ?? "0").toDouble(),
tp_id: json["tp_id"],
utc: json["UTC"],
tid: json['tid'],
id: json["id"],
times: json["times"],
impact_force: json["impact_force"].cast<double>(),
);
}
factory ProcessEntity.fromString(String str) {
List<String> list = str.split(",");
return ProcessEntity(
utc:int.parse( list[2]),
lat: double.parse(list[3]),
lng: double.parse(list[4]),
height: double.parse(list[5]),
speed: double.parse(list[6]),
tp_id: 0, tid: 0,
impact_force: []
// impact_force: double.parse(list[7]),
// recvTime: json["recv_time"] ?? DateTime.now(),
// tp_id: ,
);
}
}

View File

@ -1,15 +1,183 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'dart:ui'; import 'dart:ui';
import 'package:cpnav/pages/setting/child_pages/XyChange/xy_change.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:scence_map/controllers/controller.dart';
// import 'package:flutter_webrtc/flutter_webrtc.dart'; // import 'package:flutter_webrtc/flutter_webrtc.dart';
import '../../models/pilePoint/coord_trans.dart';
import '../setting/child_pages/XyChange/coor_trans.dart';
import '../setting/setting_controller.dart';
import 'process.dart'; import 'process.dart';
// pile_cm
// class RealController extends GetxController {
// var sightOffset1 = const Offset(3, 3).obs;
// var sightOffsetInit1 = const Offset(0, 0).obs;
// var sightInit1 = const Offset(0, 0).obs;
// var initDx = 0.0.obs;
// reset() {
// sightOffset1.value = const Offset(3, 3);
// sightOffsetInit1.value = const Offset(0, 0);
// sightInit1.value = const Offset(0, 0);
// initDx.value = 0.0;
// update();
// }
// // RTCPeerConnection? peerConnection;
// // RTCDataChannel? dataChannel;
// final speed = 0.0.obs;
// final depth = 0.0.obs;
// final tiltX = 0.0.obs;
// final tiltY = 0.0.obs;
// final centerX = 0.0.obs;
// final centerY = 0.0.obs;
// final current1 = 0.0.obs;
// final current2 = 0.0.obs;
// final totalFlow2 = 0.0.obs;
// final totalFlow1 = 0.0.obs;
// final flow10cm1 = 0.0.obs;
// final flow10cm2 = 0.0.obs;
// final subtotalFlow2 = 0.0.obs;
// final subtotalFlow1 = 0.0.obs;
// final recvTime = ''.obs;
// final alt = 0.0.obs;
// final lng = 0.0.obs;
// final lat = 0.0.obs;
// final pileId = ''.obs;
// final time = "0".obs;
// final startIndex = 0.obs;
// // 线
// final processList = <ProcessEntity>[].obs;
// var isDataVisible = false.obs;
// void updateProcessList(List<ProcessEntity> newList) {
// processList.assignAll(newList); // 使 assignAll RxList
// }
// DateTime? sliderTime;
// updateSlider(double newValue, [isHand = true]) {
// if (isHand) {
// sliderTime = DateTime.now();
// }
// startIndex.value = newValue.toInt();
// update();
// }
// @override
// void onInit() {
// super.onInit();
// //
// // Timer.periodic(const Duration(milliseconds: 1000), (_) {
// // time.value = DateTime.now();
// // });
// initializePeerConnection();
// }
// void initializePeerConnection() async {
// // final configuration = <String, dynamic>{
// // 'iceServers': [
// // {'url': 'stun:stun.l.google.com:19302'},
// // ],
// // };
// // peerConnection = await createPeerConnection(configuration);
// // initializeDataChannel();
// }
// // void initializeDataChannel() async {
// // //
// // dataChannel = await peerConnection!
// // .createDataChannel('dataChannel', RTCDataChannelInit()..id = 1);
// // //
// // dataChannel!.onMessage = (RTCDataChannelMessage message) {
// // //
// // if (message.isBinary) {
// // onBleData(message.binary);
// // }
// // };
// // }
// onBleData(Uint8List data) {
// ByteData byteData = data.buffer.asByteData();
// int tag = byteData.getUint8(0);
// // int length = byteData.getUint8(1);
// if (tag == 161) {
// speed.value = byteData.getInt16(2, Endian.little) * 0.1;
// int timeInt = byteData.getUint16(4, Endian.little);
// // log(timeInt);
// time.value = convertSecondsToMinSec(timeInt);
// depth.value = byteData.getInt16(6, Endian.little) * 0.001;
// pileId.value = byteData.getUint16(8, Endian.little).toString();
// subtotalFlow1.value = byteData.getInt16(10, Endian.little) * 0.01;
// flow10cm1.value = byteData.getUint16(12, Endian.little) * 0.01;
// totalFlow1.value = byteData.getInt32(14, Endian.little) * 0.01;
// subtotalFlow2.value = byteData.getInt16(18, Endian.little) * 0.01;
// flow10cm2.value = byteData.getUint16(20, Endian.little) * 0.01;
// totalFlow2.value = byteData.getInt32(22, Endian.little) * 0.01;
// current1.value = byteData.getUint16(26, Endian.little) * 0.01;
// current2.value = byteData.getUint16(28, Endian.little) * 0.01;
// // current3.value = byteData.getUint16(30, Endian.little) * 0.01;
// int tag1 = byteData.getUint8(34);
// // int length = byteData.getUint8(35);
// if (tag1 == 162) {
// // var gpsStatus = byteData.getUint8(36);
// // var gpsView = byteData.getUint8(37);
// // var gpsUse = byteData.getUint8(38);
// // var reg = byteData.getUint8(39);
// // var utc = byteData.getUint32(40, Endian.little);
// //
// centerX.value = byteData.getFloat64(44, Endian.little);
// centerY.value = byteData.getFloat64(52, Endian.little);
// // log("中心---$centerX,$centerY");
// // tiltX.value = byteData.getFloat64(44, Endian.little);
// // tiltY.value = byteData.getFloat64(52, Endian.little);
// // var direction = byteData.getFloat64(60, Endian.little);
// // var pitch = byteData.getFloat64(68, Endian.little);
// // log("$gpsUse,$gpsView,$utc,$direction,$pitch");
// }
// }
// }
// String convertSecondsToMinSec(int totalSeconds) {
// int minutes = totalSeconds ~/ 60;
// int seconds = totalSeconds % 60;
// String formattedTime = '$minutes:${seconds.toString().padLeft(2, '0')}';
// return formattedTime;
// }
// @override
// void dispose() {
// // dataChannel?.close(); //
// // peerConnection?.close(); //
// super.dispose();
// }
// }
final ScenceMapController mapController = Get.find<ScenceMapController>();
SettingController settingController = Get.find<SettingController>();
XYChangeController xyChangeController = Get.put(XYChangeController());
class RealController extends GetxController { class RealController extends GetxController {
var sightOffset1 = const Offset(3, 3).obs; var sightOffset1 = const Offset(3, 3).obs;
var sightOffsetInit1 = const Offset(0, 0).obs; var sightOffsetInit1 = const Offset(0, 0).obs;
var sightInit1 = const Offset(0, 0).obs; var sightInit1 = const Offset(0, 0).obs;
var initDx = 0.0.obs; var initDx = 0.0.obs;
var processdata = ProcessEntity(
tid: 0,
speed: 0,
alt: 0,
lng: 0,
lat: 0,
tp_id: 0,
utc: DateTime.now().millisecond,
impact_force: []).obs;
var dataCount = 0.obs;
CoordTrans? coordTrans;
reset() { reset() {
sightOffset1.value = const Offset(3, 3); sightOffset1.value = const Offset(3, 3);
sightOffsetInit1.value = const Offset(0, 0); sightOffsetInit1.value = const Offset(0, 0);
@ -19,136 +187,35 @@ class RealController extends GetxController {
update(); update();
} }
// RTCPeerConnection? peerConnection;
// RTCDataChannel? dataChannel;
final speed = 0.0.obs;
final depth = 0.0.obs;
final tiltX = 0.0.obs;
final tiltY = 0.0.obs;
final centerX = 0.0.obs;
final centerY = 0.0.obs;
final current1 = 0.0.obs;
final current2 = 0.0.obs;
final totalFlow2 = 0.0.obs;
final totalFlow1 = 0.0.obs;
final flow10cm1 = 0.0.obs;
final flow10cm2 = 0.0.obs;
final subtotalFlow2 = 0.0.obs;
final subtotalFlow1 = 0.0.obs;
final recvTime = ''.obs;
final alt = 0.0.obs;
final lng = 0.0.obs;
final lat = 0.0.obs;
final pileId = ''.obs;
final time = "0".obs;
final startIndex = 0.obs;
// 线
final processList = <ProcessEntity>[].obs;
var isDataVisible = false.obs; var isDataVisible = false.obs;
void updateProcessList(List<ProcessEntity> newList) {
processList.assignAll(newList); // 使 assignAll RxList
}
DateTime? sliderTime;
updateSlider(double newValue, [isHand = true]) {
if (isHand) {
sliderTime = DateTime.now();
}
startIndex.value = newValue.toInt();
update();
}
@override
void onInit() {
super.onInit();
//
// Timer.periodic(const Duration(milliseconds: 1000), (_) {
// time.value = DateTime.now();
// });
initializePeerConnection();
}
void initializePeerConnection() async {
// final configuration = <String, dynamic>{
// 'iceServers': [
// {'url': 'stun:stun.l.google.com:19302'},
// ],
// };
// peerConnection = await createPeerConnection(configuration);
// initializeDataChannel();
}
// void initializeDataChannel() async {
// //
// dataChannel = await peerConnection!
// .createDataChannel('dataChannel', RTCDataChannelInit()..id = 1);
// //
// dataChannel!.onMessage = (RTCDataChannelMessage message) {
// //
// if (message.isBinary) {
// onBleData(message.binary);
// }
// };
// }
onBleData(Uint8List data) { onBleData(Uint8List data) {
ByteData byteData = data.buffer.asByteData(); String str = String.fromCharCodes(data);
int tag = byteData.getUint8(0);
// int length = byteData.getUint8(1);
if (tag == 161) {
speed.value = byteData.getInt16(2, Endian.little) * 0.1;
int timeInt = byteData.getUint16(4, Endian.little);
// log(timeInt);
time.value = convertSecondsToMinSec(timeInt);
depth.value = byteData.getInt16(6, Endian.little) * 0.001;
pileId.value = byteData.getUint16(8, Endian.little).toString();
subtotalFlow1.value = byteData.getInt16(10, Endian.little) * 0.01;
flow10cm1.value = byteData.getUint16(12, Endian.little) * 0.01;
totalFlow1.value = byteData.getInt32(14, Endian.little) * 0.01;
subtotalFlow2.value = byteData.getInt16(18, Endian.little) * 0.01;
flow10cm2.value = byteData.getUint16(20, Endian.little) * 0.01;
totalFlow2.value = byteData.getInt32(22, Endian.little) * 0.01;
current1.value = byteData.getUint16(26, Endian.little) * 0.01;
current2.value = byteData.getUint16(28, Endian.little) * 0.01;
// current3.value = byteData.getUint16(30, Endian.little) * 0.01;
int tag1 = byteData.getUint8(34);
// int length = byteData.getUint8(35);
if (tag1 == 162) {
// var gpsStatus = byteData.getUint8(36);
// var gpsView = byteData.getUint8(37);
// var gpsUse = byteData.getUint8(38); ProcessEntity process = ProcessEntity.fromString(str);
// var reg = byteData.getUint8(39); processdata.value = process;
// var utc = byteData.getUint32(40, Endian.little); dataCount.value++;
// CoorTransModel trans = xyChangeController.coorTrans.value;
centerX.value = byteData.getFloat64(44, Endian.little); coordTrans ??= CoordTrans(TransOptions(
centerY.value = byteData.getFloat64(52, Endian.little); L0: trans.L0,
// log("中心---$centerX,$centerY"); // dstEllipsoid: trans.dstEllipsoid,
// tiltX.value = byteData.getFloat64(44, Endian.little); // srcEllipsoid: trans.srcEllipsoid,
// tiltY.value = byteData.getFloat64(52, Endian.little); dx: trans.dx,
// var direction = byteData.getFloat64(60, Endian.little); dy: trans.dy,
// var pitch = byteData.getFloat64(68, Endian.little); type: trans.type));
// log("$gpsUse,$gpsView,$utc,$direction,$pitch"); var xyh = coordTrans!
.d2p(CoordBLH(B: process.lat, L: process.lng, H: process.alt));
Offset offset = Offset(xyh.X, xyh.Y);
if ((mapController.centerXY - offset).distance > 40) {
mapController.centerXY = offset;
mapController.updateCount++;
} }
var centerDev =
mapController.deviceList[settingController.currentDevice.value?.tid];
if (centerDev != null) {
// log("center${xyh.X},${xyh.Y}");
centerDev.x.value = xyh.X;
centerDev.y.value = xyh.Y;
centerDev.update.value++;
} }
} }
String convertSecondsToMinSec(int totalSeconds) {
int minutes = totalSeconds ~/ 60;
int seconds = totalSeconds % 60;
String formattedTime = '$minutes:${seconds.toString().padLeft(2, '0')}';
return formattedTime;
}
@override
void dispose() {
// dataChannel?.close(); //
// peerConnection?.close(); //
super.dispose();
}
} }

View File

@ -22,97 +22,98 @@ class RealData extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// //
late TextStyle titleFontstyle; // late TextStyle titleFontstyle;
late TextStyle valueFontstyle; // late TextStyle valueFontstyle;
final deviceType = getDeviceType(context); // final deviceType = getDeviceType(context);
if (deviceType == DeviceType.mobile) { // if (deviceType == DeviceType.mobile) {
titleFontstyle = const TextStyle(fontSize: 15); // titleFontstyle = const TextStyle(fontSize: 15);
valueFontstyle = const TextStyle(fontSize: 36); // valueFontstyle = const TextStyle(fontSize: 36);
} else { // } else {
titleFontstyle = const TextStyle(fontSize: 22); // titleFontstyle = const TextStyle(fontSize: 22);
valueFontstyle = const TextStyle(fontSize: 45); // valueFontstyle = const TextStyle(fontSize: 45);
} // }
Widget space = const SizedBox( // Widget space = const SizedBox(
height: 5, // height: 5,
width: 5, // width: 5,
); // );
return Expanded( return const Expanded(
flex: 1, flex: 1,
child: Column( child: Column(
children: [ children: [
RealItem(children: [ // RealItem(children: [
RealItemChild( // RealItemChild(
// flex: 2, // // flex: 2,
title: "速度(m/min)", // title: "速度(m/min)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() { // child: Obx(() {
return Text( // return Text(
realController.speed.abs() >= 100 // realController.speed.abs() >= 100
? realController.speed.toStringAsFixed(1) // ? realController.speed.toStringAsFixed(1)
: realController.speed.toStringAsFixed(2), // : realController.speed.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
); // );
}), // }),
), // ),
space, // space,
RealItemChild( // RealItemChild(
// flex: 3, // // flex: 3,
title: "时间(min:s)", // title: "时间(min:s)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.time.value, // realController.time.value,
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
space, // space,
RealItemChild( // RealItemChild(
// flex: 2, // // flex: 2,
title: "深度(m)", // title: "深度(m)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.depth.toStringAsFixed(2), // realController.depth.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
]), // ]),
space, // space,
RealItem(children: [ // RealItem(children: [
RealItemChild( // RealItemChild(
// flex: 1, // // flex: 1,
title: "1#瞬时流量(L/min)", // title: "1#瞬时流量(L/min)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.subtotalFlow1.toStringAsFixed(2), // realController.subtotalFlow1.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
space, // space,
RealItemChild( // RealItemChild(
// flex: 1, // // flex: 1,
title: "2#瞬时流量(L/min)", // title: "2#瞬时流量(L/min)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.subtotalFlow2.toStringAsFixed(2), // realController.subtotalFlow2.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
]), // ]),
space, // space,
RealItem(children: [ // RealItem(children: [
RealItemChild( // RealItemChild(
// flex: 1, // // flex: 1,
title: "1#累计流量(L)", // title: "1#累计流量(L)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.totalFlow1.toStringAsFixed(2), // realController.totalFlow1.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
space, // space,
RealItemChild( // RealItemChild(
// flex: 1, // // flex: 1,
title: "2#累计流量(L)", // title: "2#累计流量(L)",
titleFontstyle: titleFontstyle, // titleFontstyle: titleFontstyle,
child: Obx(() => Text( // child: Obx(() => Text(
realController.totalFlow2.toStringAsFixed(2), // realController.totalFlow2.toStringAsFixed(2),
style: valueFontstyle, // style: valueFontstyle,
))), // ))),
]) // ])
], ],
)); ));
} }

View File

@ -1,6 +1,7 @@
// //
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'real_controller.dart'; import 'real_controller.dart';
@ -74,7 +75,12 @@ class RealDataShow extends StatelessWidget {
), ),
], ],
), ),
..._buildRealTimeDataList(context), Obx(() {
controller1.dataCount;
return Column(children: [
..._buildRealTimeDataList(context, controller1)
]);
})
], ],
), ),
), ),
@ -114,9 +120,8 @@ class RealDataShow extends StatelessWidget {
// ); // );
// } // }
List<Widget> _buildRealTimeDataList(BuildContext context) { List<Widget> _buildRealTimeDataList(
// BuildContext context, RealController controller) {
final RealController realController = Get.find();
bool isDarkMode = Theme.of(context).brightness == Brightness.dark; bool isDarkMode = Theme.of(context).brightness == Brightness.dark;
// final orientation = MediaQuery.of(context).orientation; // final orientation = MediaQuery.of(context).orientation;
@ -142,7 +147,11 @@ class RealDataShow extends StatelessWidget {
// ]; // ];
// hydraulic_tamping // hydraulic_tamping
List<DataItem> dataItems = [ List<DataItem> dataItems = [
DataItem("时间(min:s)", () => realController.time.value), DataItem(
"时间(min:s)",
() => DateFormat('HH:mm:ss').format(
DateTime.fromMillisecondsSinceEpoch(
controller.processdata.value.utc * 1000))),
// DataItem("夯击次数:", () => realController.times.value) // DataItem("夯击次数:", () => realController.times.value)
]; ];
// //
@ -157,11 +166,11 @@ class RealDataShow extends StatelessWidget {
fontSize: 13, fontSize: 13,
color: isDarkMode ? Colors.white : Colors.black, color: isDarkMode ? Colors.white : Colors.black,
)), )),
Obx(() => Text(item.value(), Text(item.value(),
style: TextStyle( style: TextStyle(
fontSize: 18, fontSize: 18,
color: isDarkMode ? Colors.white : Colors.black, color: isDarkMode ? Colors.white : Colors.black,
))), )),
], ],
), ),
); );

View File

@ -511,8 +511,8 @@ class XYChangeController extends GetxController {
project.projCode, project.projCode,
); );
if (coordTransmap.isNotEmpty) { if (coordTransmap.isNotEmpty) {
var mianBelt = var mianBelt = coordTransmap.firstWhere(
coordTransmap.firstWhere((element) => element['belt'] == 'main'); (element) => element['belt'] == 'main' || element["name"] == "主带");
coorTrans.value = CoorTransModel.fromJson(mianBelt); coorTrans.value = CoorTransModel.fromJson(mianBelt);
} else { } else {
log("当前项目没有设置中央子午线"); log("当前项目没有设置中央子午线");

View File

@ -1,3 +1,5 @@
import 'dart:async';
import 'dart:developer';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
@ -5,74 +7,83 @@ import '../../../../real/index.dart';
import '../bluetooth_page.dart'; import '../bluetooth_page.dart';
class SocketSetting { class SocketSetting {
int port = 6000; int port = 6060;
String ip = "192.168.4.1"; String ip = "192.168.1.206";
bool isConnected = false; bool isConnected = false;
int times = 0; int times = 0;
RawDatagramSocket? socket; Socket? socket;
int reconnectCount = 0;
Duration _reconnectDelay = const Duration(seconds: 5);
connect() async { connect() async {
// tcp连接 // tcp连接
// try { try {
// socket = await Socket.connect(ip, port); socket = await Socket.connect(ip, port);
// // //
// socket!.add([0xf2]); // socket!.add([0xf2]);
// // //
// socket!.listen( socket!.listen(
// (Uint8List data) { (Uint8List data) {
// realController.onBleData(data); realController.onBleData(data);
// // log('收到服务器回复:$data'); if (isConnected == false) {
// }, isConnected = true;
// onError: (error) async { reconnectCount = 0;
// disConnect(); _reconnectDelay = const Duration(seconds: 5);
}
// log('收到服务器回复:$data');
},
onError: (error) async {
disConnect();
reconnect();
log('与服务器的连接发生错误:$error');
socket = await Socket.connect(ip, port);
return;
},
);
// log('与服务器的连接发生错误:$error'); //
// socket = await Socket.connect(ip, port); socket!.done.then((_) {
// return; log('与服务器的连接已断开');
// },
// );
// // disConnect();
// socket!.done.then((_) { reconnect();
// log('与服务器的连接已断开'); });
} catch (e) {
// disConnect(); log("----------$e");
// }); disConnect();
// } catch (e) { reconnect();
// log("----------$e"); }
// disConnect();
// }
// udp连接 // udp连接
socket = await RawDatagramSocket.bind( // socket = await RawDatagramSocket.bind(
InternetAddress.anyIPv4, 6000); //InternetAddress(ip) // InternetAddress.anyIPv4, 6000); //InternetAddress(ip)
// // // //
socket!.send([0xf2], InternetAddress(ip), 6000); // socket!.send([0xf2], InternetAddress(ip), 6000);
socket!.listen((RawSocketEvent e) { // socket!.listen((RawSocketEvent e) {
times++; // times++;
if (times == 20) { // if (times == 20) {
times = 0; // times = 0;
socket!.send([0xf2], InternetAddress(ip), 6000); // socket!.send([0xf2], InternetAddress(ip), 6000);
} // }
Datagram? dg = socket!.receive(); // Datagram? dg = socket!.receive();
if (dg != null) { // if (dg != null) {
realController.onBleData(dg.data); // realController.onBleData(dg.data);
// log('${dg.address.address}:${dg.port} 接收:'); // // log('${dg.address.address}:${dg.port} 接收:');
// // //
// socket.send("已收到".codeUnits, dg.address, dg.port); // // socket.send("已收到".codeUnits, dg.address, dg.port);
} // }
}); // });
} }
write(Uint8List data) async { write(Uint8List data) async {
try { try {
// socket ??= await Socket.connect(ip, port); // socket ??= await Socket.connect(ip, port);
Datagram? dg = socket!.receive(); // Datagram? dg = socket!.receive();
socket!.send(data, dg!.address, dg.port); // socket!.send(data, dg!.address, dg.port);
// socket!.add(data); socket!.add(data);
// ignore: empty_catches // ignore: empty_catches
} catch (e) {} } catch (e) {}
} }
@ -86,4 +97,21 @@ class SocketSetting {
// //
} }
} }
void reconnect() {
if (socket != null) {
socket!.close();
socket = null;
}
log('Reconnecting in ${_reconnectDelay.inSeconds} seconds...');
Timer(_reconnectDelay, () {
reconnectCount++;
if (reconnectCount > 20) {
_reconnectDelay = const Duration(seconds: 60);
}
isConnected = false;
connect();
});
}
} }

View File

@ -1,9 +1,10 @@
import 'package:cpnav/pages/pass_track/controller.dart'; import 'package:cpnav/pages/pass_track/controller.dart';
import 'package:cpnav/pages/setting/project/model.dart'; import 'package:cpnav/pages/setting/project/model.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; import 'package:get_storage/get_storage.dart';
import 'package:scence_map/controllers/controller.dart'; import 'package:scence_map/controllers/controller.dart';
import 'package:device_info_plus/device_info_plus.dart';
import '../../models/user.dart'; import '../../models/user.dart';
import '../../service/base.dart'; import '../../service/base.dart';
import '../../service/user/loginprefs.dart'; import '../../service/user/loginprefs.dart';
@ -26,9 +27,28 @@ class SettingController extends GetxController {
// @override // @override
// void onInit() async { // void onInit() async {
// super.onInit(); // super.onInit();
// } // }
Future<void> getDeviceId(context) async {
final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
String id;
//
if (Theme.of(context).platform == TargetPlatform.android) {
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
id = androidInfo.brand; //
}
// else if (Theme.of(context).platform == TargetPlatform.iOS) {
// IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
// // id = iosInfo.identifierForVendor; // iOS设备编号
// }
else {
id = 'Unknown platform';
}
}
init() async { init() async {
isInitialized = false; isInitialized = false;
UserModel? getUser = UserController().getUser(); UserModel? getUser = UserController().getUser();
@ -55,9 +75,8 @@ class SettingController extends GetxController {
currentProject.value = projectList[0]; currentProject.value = projectList[0];
setProject(currentProject.value!.toJson()); setProject(currentProject.value!.toJson());
// services.projCode = currentProject.value!.projCode; // services.projCode = currentProject.value!.projCode;
await getBindService(services);
} }
await getBindService(services);
isInitialized = true; isInitialized = true;
} }

View File

@ -197,6 +197,9 @@ class DrawDirection extends CustomPainter {
} }
getRect(List<Offset> list) { getRect(List<Offset> list) {
if (list.isEmpty) {
return [Offset.zero, Offset.zero, Offset.zero, Offset.zero];
}
List<Offset> rect = []; List<Offset> rect = [];
double minx = double.infinity; double minx = double.infinity;
double maxx = double.negativeInfinity; double maxx = double.negativeInfinity;

View File

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'dart:io'; import 'dart:io';
@ -41,12 +42,11 @@ class BaseService {
loginPrefs.clearLogin(); loginPrefs.clearLogin();
return; return;
} }
if (res['code'] == 1000) { int code = res['code'];
return res; if (code != 1000) {
} else { // log(res);
log(res);
String msg = res['message'].toString(); String msg = res['message'].toString();
if (res['code'] == 404) { if (code == 404) {
msg = "当前接口不存在:$msg"; msg = "当前接口不存在:$msg";
} }
scaffoldMessengerKey.currentState?.showSnackBar( scaffoldMessengerKey.currentState?.showSnackBar(
@ -56,9 +56,14 @@ class BaseService {
backgroundColor: Colors.red, backgroundColor: Colors.red,
), ),
); );
return res;
}
return res;
} catch (e) {
log(" catch error: ${e.toString()}");
if (e is TimeoutException) {
return {}; return {};
} }
} catch (e) {
scaffoldMessengerKey.currentState?.showSnackBar( scaffoldMessengerKey.currentState?.showSnackBar(
SnackBar( SnackBar(
content: Text('发生错误: ${e.toString()}'), content: Text('发生错误: ${e.toString()}'),
@ -66,7 +71,7 @@ class BaseService {
backgroundColor: Colors.red, backgroundColor: Colors.red,
), ),
); );
log(e.toString());
return {}; return {};
} }
} }
@ -102,9 +107,9 @@ class BaseService {
checkExpire() { checkExpire() {
int old = loginPrefs.getRefreshExpire(); int old = loginPrefs.getRefreshExpire();
int now = DateTime.now().millisecond; int now = DateTime.now().millisecondsSinceEpoch;
if (now - old <= 2000) { if (old - now <= 2000) {
//2s //2s
refreshToken(); refreshToken();
} }
@ -132,7 +137,6 @@ class BaseService {
} catch (e) { } catch (e) {
log("refreshToken error: $e"); log("refreshToken error: $e");
} }
} }
} }
@ -314,7 +318,7 @@ class GetServices {
dateEnd ??= date; dateEnd ??= date;
Map? res = await service.getClient( Map? res = await service.getClient(
"/api/$projType/record/list?org_code=$org_code&proj_code=$projCode&date=$date&dateEnd=$dateEnd"); //&tid=1000 "/api/$projType/record/list?org_code=$org_code&proj_code=$projCode&date=$date&dateEnd=$dateEnd"); //&tid=1000
if (res != null && res['data'] != null) { if (res != null && res.isNotEmpty && res['data'] != null) {
return res['data']; return res['data'];
} }

@ -1 +1 @@
Subproject commit cc9ee2fe1abf30613fe191794e841cf0399f8d58 Subproject commit 2832f031e1f01b2a0b1f285bc44d80121ecbddb6

View File

@ -121,6 +121,22 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.7.10" version: "0.7.10"
device_info_plus:
dependency: "direct main"
description:
name: device_info_plus
sha256: f545ffbadee826f26f2e1a0f0cbd667ae9a6011cc0f77c0f8f00a969655e6e95
url: "https://pub.flutter-io.cn"
source: hosted
version: "11.1.1"
device_info_plus_platform_interface:
dependency: transitive
description:
name: device_info_plus_platform_interface
sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.1"
dylib: dylib:
dependency: transitive dependency: transitive
description: description:
@ -153,6 +169,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.3" version: "2.1.3"
file:
dependency: transitive
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.1"
fl_chart: fl_chart:
dependency: "direct main" dependency: "direct main"
description: description:
@ -698,6 +722,22 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.4.1+1" version: "0.4.1+1"
win32:
dependency: transitive
description:
name: win32
sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.8.0"
win32_registry:
dependency: transitive
description:
name: win32_registry
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.5"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:

View File

@ -63,6 +63,7 @@ dependencies:
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
searchfield: ^1.1.7 searchfield: ^1.1.7
device_info_plus: ^11.1.1
dev_dependencies: dev_dependencies: