import 'package:flutter/material.dart'; import 'package:toly_menu/toly_menu.dart'; import '../../menus.dart'; class App extends StatelessWidget { const App({super.key}); @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( appBarTheme: const AppBarTheme( elevation: 0, iconTheme: IconThemeData(color: Colors.black), titleTextStyle: TextStyle( color: Colors.black, fontSize: 18, fontWeight: FontWeight.bold, ))), debugShowCheckedModeBanner: false, home: AppLayout()); } } class AppLayout extends StatelessWidget { const AppLayout({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Row( children: [ SizedBox( width: 210, child: MenuPanel(), ), // Container() ], ), // appBar: AppToolBar(), // body: AppNavigation(), ); } } class MenuPanel extends StatefulWidget { const MenuPanel({super.key}); @override State createState() => _MenuPanelState(); } class _MenuPanelState extends State { MenuState state = MenuState(expandMenus: ['/dashboard'], activeMenu: '/dashboard/data_analyse', items: menus); @override Widget build(BuildContext context) { return TolyMenu(state: state, onSelect: _onSelect); } void _onSelect(MenuData menu) { if(menu.isLeaf){ state = state.copyWith(activeMenu: menu.path); }else{ List menus = []; String path = menu.path.substring(1); List parts = path.split('/'); if(parts.isNotEmpty){ String path = ''; for (String part in parts) { path+='/$part'; menus.add(path); } } if(state.expandMenus.contains(menu.path)){ menus.remove(menu.path); } state = state.copyWith(expandMenus: menus); } setState(() { }); } }