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

Виджет 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
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить