70 lines
2.0 KiB
Dart
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';
|
||
|
}
|
||
|
}
|