12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import 'package:cs_resources/constants/color_constants.dart';
- import 'package:cs_resources/generated/assets.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get_utils/src/extensions/widget_extensions.dart';
- import 'package:widgets/ext/ex_widget.dart';
- import 'package:widgets/my_load_image.dart';
- import 'package:widgets/my_text_view.dart';
- class CustomRadioCheck extends StatefulWidget {
- final List<String> options;
- final Function(int index, String text) onOptionSelected;
- CustomRadioCheck({required this.options, required this.onOptionSelected});
- @override
- _CustomRadioCheckState createState() => _CustomRadioCheckState();
- }
- class _CustomRadioCheckState extends State<CustomRadioCheck> {
- String? _selectedOption;
- @override
- void initState() {
- super.initState();
- if (widget.options.isNotEmpty) {
- _selectedOption = widget.options.first;
- }
- }
- @override
- Widget build(BuildContext context) {
- return Wrap(
- spacing: 8.0, // 水平间距
- runSpacing: 8.0, // 垂直间距
- children: widget.options.map((option) {
- return _buildRadioWithIconAndText(
- path: option == _selectedOption ? Assets.cptAuthLoginRadioChecked : Assets.cptAuthLoginRadioUncheck,
- text: option,
- value: option == _selectedOption,
- onChanged: (value) {
- setState(() {
- _selectedOption = option;
- int selectedIndex = widget.options.indexOf(option);
- widget.onOptionSelected(selectedIndex, option);
- });
- },
- );
- }).toList(),
- );
- }
- Widget _buildRadioWithIconAndText({
- required String path,
- required String text,
- required bool value,
- required Function(bool) onChanged,
- }) {
- return Row(
- mainAxisSize: MainAxisSize.min,
- children: <Widget>[
- MyAssetImage(path, width: 22, height: 22),
- SizedBox(width: 8),
- MyTextView(text, marginLeft: 10, textColor: ColorConstants.white, fontSize: 14, isFontRegular: true),
- ],
- ).marginOnly(right: 20).onTap((){
- onChanged(true);
- });
- }
- }
|