import 'package:flutter/material.dart'; import 'package:get/get.dart'; class SingleButton extends StatefulWidget { // final controller = Get.find(tag: 'gnss'); final List signalColorList; final Function(Color) onSelectionChanged; SingleButton({ required this.signalColorList, required this.onSelectionChanged, }); @override _SingleButtonState createState() => _SingleButtonState(); } class _SingleButtonState extends State { late Color QselectedSignal; @override void initState() { super.initState(); QselectedSignal = widget.signalColorList[0]; // 默认选中第一个颜色 } void updateSelection(Color color) { setState(() { QselectedSignal = color; widget.onSelectionChanged(color); // 通知父组件 }); } @override Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.center, children: List.generate(widget.signalColorList.length, (index) { return Row( mainAxisSize: MainAxisSize.min, children: [ Radio( value: widget.signalColorList[index], groupValue: QselectedSignal, onChanged: (Color? value) { if (value != null) { updateSelection(value); } }, activeColor: widget.signalColorList[index], ), Text( colorToString(widget.signalColorList[index]), style: TextStyle(color: widget.signalColorList[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 '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)'; return 'Unknown Color'; } }