Виджет SubmenuButton
Виджет SubmenuButton ставят внутри
MenuAnchor.
Подпись пункта передают в child,
вложенные
MenuItemButton
- в menuChildren.
Меню строят вместе с MenuAnchor на экране.
Синтаксис
SubmenuButton(
menuChildren: [
MenuItemButton(
onPressed: () {},
child: Text('abcde'),
),
],
child: Text('12345'),
)
Параметры
| Параметр | Описание |
|---|---|
child |
Подпись пункта с подменю. |
menuChildren |
Виджеты вложенного меню. |
Пример
Давайте откроем меню с подпунктом:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: MenuAnchor(
menuChildren: [
SubmenuButton(
menuChildren: [
MenuItemButton(
onPressed: () {},
child: Text('abcde'),
),
],
child: Text('12345'),
),
],
builder: (context, controller, child) {
return ElevatedButton(
onPressed: () {
if (controller.isOpen) {
controller.close();
} else {
controller.open();
}
},
child: Text('abcde'),
);
},
),
),
),
),
);
}
После открытия меню пункт '12345' раскроет вложенный пункт 'abcde'.
Пример
Давайте добавим два пункта во вложенное меню:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: MenuAnchor(
menuChildren: [
SubmenuButton(
menuChildren: [
MenuItemButton(onPressed: () {}, child: Text('11111')),
MenuItemButton(onPressed: () {}, child: Text('22222')),
],
child: Text('abcde'),
),
],
builder: (context, controller, child) {
return FloatingActionButton(
onPressed: () => controller.open(),
child: Icon(Icons.menu),
);
},
),
),
),
);
}
Круглая кнопка откроет меню с SubmenuButton и двумя дочерними пунктами.
Смотрите также
-
виджет
MenuAnchor,
который позиционирует меню на экране -
виджет
MenuItemButton,
которым оформляют обычный пункт меню -
виджет
PopupMenuButton,
который открывает меню по нажатию -
виджет
PopupMenuItem,
который описывает пункт PopupMenu