RadioGroup и Radio в Flutter
Когда из списка можно выбрать только один
пункт, используют радиокнопки. В актуальном
Material 3 группу оформляют виджетом
RadioGroup:
он задаёт общее groupValue и
onChanged для всех потомков.
У каждого Radio
указывают только value - свой
идентификатор варианта. Параметра
groupValue у отдельного Radio
нет: выбранность сравнивает родительская
RadioGroup. Текущий выбор хранят
в State:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String delivery = 'pickup';
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('Delivery method'),
RadioGroup<String>(
groupValue: delivery,
onChanged: (value) {
setState(() {
delivery = value!;
});
},
child: Column(
children: [
Row(
children: [
Radio<String>(value: 'pickup'),
const Text('Pickup'),
],
),
Row(
children: [
Radio<String>(value: 'courier'),
const Text('Courier'),
],
),
],
),
),
const SizedBox(height: 8),
Text('Selected: $delivery'),
],
),
),
);
}
}
Сделайте RadioGroup с тремя
вариантами: 'M', 'F',
'Unspecified'. Храните выбор
в String в State и выводите
его текстом под группой.