Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
569 of 1024 menu
◀ ▶

Виджет ExpansionPanelList

Виджет ExpansionPanelList показывает панели ExpansionPanel в children. Переключение - expansionCallback, только одна открыта - expansionCallback с индексом, вариант radio - radio.

Синтаксис

ExpansionPanelList( expansionCallback: (int panelIndex, bool isExpanded) {}, children: [ ExpansionPanel( headerBuilder: (context, isExpanded) => Text('abcde'), body: Text('12345'), ), ], )

Параметры

Параметр Описание
children Список ExpansionPanel.
expansionCallback Индекс панели и новое состояние expanded.

Методы

Метод Описание
radio Держит открытой только одну панель.

Пример

Давайте откроем одну панель:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: PanelListDemo())); } class PanelListDemo extends StatefulWidget { const PanelListDemo({super.key}); @override State<PanelListDemo> createState() => _PanelListDemoState(); } class _PanelListDemoState extends State<PanelListDemo> { int idx = 0; @override Widget build(BuildContext context) { return Scaffold( body: ExpansionPanelList( expansionCallback: (i, open) { setState(() => idx = open ? i : -1); }, children: [ ExpansionPanel( isExpanded: idx == 0, headerBuilder: (c, e) => Text('abcde'), body: Text('12345'), ), ], ), ); } }

Раскрытая панель покажет '12345'.

Пример

Давайте используем elevation:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: ExpansionPanelList( elevation: 2, expansionCallback: (i, o) {}, children: [ ExpansionPanel( headerBuilder: (c, e) => Text('12345'), body: Text('abcde'), ), ], ), ), ), ); }

Панель получит лёгкую тень.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить