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