2024-07-30 18:20:27 +08:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
import 'chartpart.dart';
|
|
|
|
import 'singlebutton.dart';
|
|
|
|
|
2024-07-31 19:04:11 +08:00
|
|
|
class SignalQuality extends StatefulWidget {
|
2024-07-30 18:20:27 +08:00
|
|
|
@override
|
2024-07-31 19:04:11 +08:00
|
|
|
_SignalQualityState createState() => _SignalQualityState();
|
2024-07-30 18:20:27 +08:00
|
|
|
}
|
|
|
|
|
2024-07-31 19:04:11 +08:00
|
|
|
class _SignalQualityState extends State<SignalQuality> {
|
2024-07-30 18:20:27 +08:00
|
|
|
Color selectedColor = Colors.blue; // 默认颜色
|
|
|
|
List<Color> colors = [Colors.blue, Colors.red, Colors.green, Colors.orange];
|
|
|
|
List<List<Color>> groupColors = []; // 存储每个组的颜色
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
// 初始化每个组的颜色
|
|
|
|
for (int i = 0; i < 4; i++) {
|
2024-08-01 18:17:57 +08:00
|
|
|
groupColors
|
|
|
|
.add([colors[i % colors.length], colors[(i + 1) % colors.length]]);
|
2024-07-30 18:20:27 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void updateGroupColor(int groupIndex, Color color) {
|
|
|
|
setState(() {
|
|
|
|
for (int i = 0; i < groupColors.length; i++) {
|
|
|
|
// 只保留与选中颜色相同的颜色
|
2024-08-01 18:17:57 +08:00
|
|
|
groupColors[i] =
|
|
|
|
groupColors[i].first == color ? [color] : [Colors.transparent];
|
2024-07-30 18:20:27 +08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
String colorToString(Color color) {
|
|
|
|
// 将颜色转换为字符串
|
2024-08-01 18:17:57 +08:00
|
|
|
if (color == Color.fromARGB(255, 255, 0, 0)) return 'GPS(G)';
|
|
|
|
if (color == Color.fromARGB(255, 0, 255, 0)) return 'GLONASS(R)';
|
|
|
|
if (color == Color.fromARGB(255, 0, 0, 255)) return 'GALILEO(E)';
|
|
|
|
if (color == Color.fromARGB(255, 255, 255, 0)) return 'BEIDOU(B)';
|
|
|
|
if (color == Color.fromARGB(255, 0, 255, 255)) return 'QZSS(Q)';
|
2024-07-30 18:20:27 +08:00
|
|
|
return 'Unknown Color';
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Scaffold(
|
|
|
|
appBar: AppBar(
|
|
|
|
title: Text('信号质量'),
|
|
|
|
),
|
|
|
|
body: OrientationBuilder(builder: (context, orientation) {
|
|
|
|
return Column(
|
|
|
|
children: [
|
|
|
|
SingleButton(
|
2024-08-01 18:17:57 +08:00
|
|
|
// colors: colors,
|
2024-07-30 18:20:27 +08:00
|
|
|
onSelectionChanged: (color) {
|
|
|
|
setState(() {
|
|
|
|
selectedColor = color; // 更新选中的颜色
|
|
|
|
// 更新所有组为选中颜色
|
|
|
|
for (int i = 0; i < groupColors.length; i++) {
|
|
|
|
updateGroupColor(i, selectedColor);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
2024-08-01 18:17:57 +08:00
|
|
|
signalColorList: [],
|
2024-07-30 18:20:27 +08:00
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: Center(
|
2024-08-01 18:17:57 +08:00
|
|
|
child: ChartPart(), // 将组颜色传递给 ChartPart
|
2024-07-30 18:20:27 +08:00
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|