import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class MenuData { // 标签 final String label; // 图标数据 final IconData icon; const MenuData({ required this.label, required this.icon, }); } class AppBottomBar extends StatelessWidget { final int currentIndex; final List menus; final ValueChanged? onItemTap; const AppBottomBar({ Key? key, this.onItemTap, this.currentIndex = 0, required this.menus, }) : super(key: key); @override Widget build(BuildContext context) { return BottomNavigationBar( backgroundColor: Colors.white, onTap: onItemTap, currentIndex: currentIndex, elevation: 3, type: BottomNavigationBarType.fixed, iconSize: 22, selectedItemColor: Theme.of(context).primaryColor, selectedLabelStyle: const TextStyle(fontWeight: FontWeight.bold), showUnselectedLabels: true, showSelectedLabels: true, items: menus.map(_buildItemByMenuMeta).toList(), ); } BottomNavigationBarItem _buildItemByMenuMeta(MenuData menu) { return BottomNavigationBarItem( label: menu.label, icon: Icon(menu.icon), ); } }