Класс ExpansionPanelRadio
Класс ExpansionPanelRadio используют в
ExpansionPanelList.radio.
Заголовок - headerBuilder,
тело - body,
значение - value для выбора одной панели.
Синтаксис
ExpansionPanelRadio<int>(
value: 0,
headerBuilder: (BuildContext context, bool isExpanded) {
return ListTile(title: Text('abcde'));
},
body: Text('12345'),
)
Параметры
| Параметр | Описание |
|---|---|
value |
Идентификатор панели в группе radio. |
headerBuilder |
Заголовок панели. |
body |
Содержимое при раскрытии. |
Пример
Давайте соберём radio panel list:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: RadioPanelDemo()));
}
class RadioPanelDemo extends StatefulWidget
{
const RadioPanelDemo({super.key});
@override
State<RadioPanelDemo> createState() => _RadioPanelDemoState();
}
class _RadioPanelDemoState extends State<RadioPanelDemo>
{
int? val = 0;
@override
Widget build(BuildContext context)
{
return Scaffold(
body: ExpansionPanelList.radio(
initialOpenPanelValue: 0,
expansionCallback: (v, open) {
setState(() => val = open ? v as int : null);
},
children: [
ExpansionPanelRadio(
value: 0,
headerBuilder: (c, e) => Text('abcde'),
body: Text('12345'),
),
],
),
);
}
}
Открыта панель со value 0 и текстом '12345'.
Пример
Давайте добавим вторую radio-панель:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: ExpansionPanelList.radio(
expansionCallback: (v, o) {},
children: [
ExpansionPanelRadio(
value: 1,
headerBuilder: (c, e) => Text('abcde'),
body: Text('11111'),
),
ExpansionPanelRadio(
value: 2,
headerBuilder: (c, e) => Text('12345'),
body: Text('22222'),
),
],
),
),
),
);
}
Две панели, открыта только одна в группе.
Смотрите также
-
метод
radio,
списокradio-панелей -
класс
ExpansionPanel,
обычная панель без value -
виджет
ExpansionPanelList,
базовый список -
виджет
Radio,
переключатель одного значения