import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MulButton extends StatefulWidget { final List signalColorList; final Function(int, bool) onSelectionChanged; MulButton({ required this.signalColorList, required this.onSelectionChanged, }); @override _MulButtonState createState() => _MulButtonState(); } class _MulButtonState extends State { late List selectedSignal; @override void initState() { super.initState(); selectedSignal = List.generate(widget.signalColorList.length, (index) => false); } void updateSelection(int index, bool value) { setState(() { selectedSignal[index] = value; // List selected = []; // for (int i = 0; i < selectedColors.length; i++) { // if (selectedColors[i]) { // selected.add(widget.colors[i]); // } // } widget.onSelectionChanged(index, value); // 通知父组件 }); } @override Widget build(BuildContext context) { return Wrap( spacing: 8.0, // 水平间距 runSpacing: 4.0, // 垂直间距 alignment: WrapAlignment.start, children: List.generate(widget.signalColorList.length, (index) { return Row( mainAxisSize: MainAxisSize.min, children: [ Checkbox( value: selectedSignal[index], onChanged: (bool? value) { if (value != null) { updateSelection(index, value); } }, activeColor: widget.signalColorList[index], shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(4), // 设置边角 ), ), 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'; } }