import 'package:flutter/material.dart'; class SingleButton extends StatefulWidget { // final controller = Get.find(tag: 'gnss'); final List QsignalColorList; final Function(Color) onSelectionChanged; SingleButton({ required this.QsignalColorList, required this.onSelectionChanged, }); @override _SingleButtonState createState() => _SingleButtonState(); } class _SingleButtonState extends State { 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( 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'; } }