gnssview/lib/quality/singlebutton.dart
2024-08-06 17:41:15 +08:00

70 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
class SingleButton extends StatefulWidget {
// final controller = Get.find(tag: 'gnss');
final List<Color> QsignalColorList;
final Function(Color) onSelectionChanged;
SingleButton({
required this.QsignalColorList,
required this.onSelectionChanged,
});
@override
_SingleButtonState createState() => _SingleButtonState();
}
class _SingleButtonState extends State<SingleButton> {
late Color QselectedSignalColor;
@override
void initState() {
super.initState();
QselectedSignalColor = Colors.black; // 默认选中第一个颜色
}
void updateSelection(Color color) {
setState(() {
QselectedSignalColor = color;
widget.onSelectionChanged(color); // 通知父组件
});
}
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(widget.QsignalColorList.length, (index) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Radio<Color>(
value: widget.QsignalColorList[index],
groupValue: QselectedSignalColor,
onChanged: (Color? value) {
if (value != null) {
updateSelection(value);
}
},
activeColor: widget.QsignalColorList[index],
),
Text(
colorToString(widget.QsignalColorList[index]),
style: TextStyle(color: widget.QsignalColorList[index]),
),
],
);
}),
);
}
String colorToString(Color color) {
if (color == Color.fromARGB(255, 255, 0, 0)) return 'GPS(G)';
if (color == Color.fromARGB(255, 0, 255, 0)) return 'GLO(R)';
if (color == Color.fromARGB(255, 0, 0, 255)) return 'GAL(E)';
if (color == Color.fromARGB(255, 146, 73, 206)) return 'BDS(B)';
if (color == Color.fromARGB(255, 13, 179, 179)) return 'QZS(Q)';
return 'Unknown Color';
}
}