Как создать выпадающее подменю во флаттере

Я работаю над боковой панелью во флаттере, мне нужно добавить подменю к уже существующим пунктам меню.

У меня есть два файла, menu_items.dart и sidebar.dart. Menu_Items коды:

      import 'package:flutter/material.dart';

class MenuItem extends StatelessWidget {
  const MenuItem({Key key, this.icon, this.title, this.onTap})
      : super(key: key);
  final IconData icon;
  final String title;
  final Function onTap;
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: onTap,
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Row(
          children: [
            Icon(
              icon,
              color: Colors.white,
              size: 20,
            ),
            SizedBox(
              width: 20,
            ),
            Text(
              title,
              style: TextStyle(
                fontWeight: FontWeight.w300,
                fontSize: 15,
                color: Colors.white,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Вот как я использую его в Sidebar.dart:

         MenuItem(
      icon: Icons.sensor_window,
      title: 'Sensor Parameters',
      ),

Дело в том, что мне нужно сделать параметр датчика

родительский раскрывающийся список со списком пунктов меню, которые у меня уже есть. Пункты выпадающего подменю:

      TemChartClickEvent,
 HumChartClickEvent,
 MoisChartClickEvent,
 PhChartClickEvent,
 NurChartClickEvent,
 GasChartClickEvent,

Которые созданы с использованием блочных шаблонов. Родительское меню:

      MenuItem(
      icon: Icons.sensor_window,
      title: 'Sensor Parameters',
      ),

Я искал в Интернете хороший ресурс и составлял меню, но у меня не получалось заставить его работать.

Любой может помочь мне настроить его, учитывая, что у меня уже есть код MenuItem выше, как мне вписаться в другой набор кодов, вызвать DropDownMenu с его функциями, а затем передать его в родительское меню, код «MenuItem» выше

1 ответ

У вас есть виджет ExpansionTile или использованный пакет multilevel_drawer

      Drawer(
  child: ListView(
  children: <Widget>[
  ExpansionTile(
  title: Text("Expansion Title"),
    children: <Widget>[Text("children 1"), Text("children 2")],
  )
 ],
 ),
);
Другие вопросы по тегам