import 'package:flutter/material.dart'; import '../constants/app_constants.dart'; /// 时间: 2026-03-22 /// 功能: 主导航内「标题 + Tab」共用 AppBar 构造 /// 介绍: 压缩工具栏与 Tab 行高度,关闭 M3 卷动 surface tint,统一收藏页与发现页顶部观感 /// 最新变化: 初始提取,减少两页相同结构的顶部留白 /// 主导航子页(IndexedStack 内)带 [TabBar] 的页面共用 [AppBar] 配置 class TabbedNavAppBar { TabbedNavAppBar._(); static AppBar build({ required String title, required TabController tabController, required List tabLabels, List? actions, Widget? leading, bool tabBarScrollable = false, EdgeInsetsGeometry? tabPadding, EdgeInsetsGeometry? tabLabelPadding, }) { return AppBar( title: Text( title, style: const TextStyle( fontWeight: FontWeight.bold, fontSize: 18, color: Colors.black87, ), ), backgroundColor: Colors.white, foregroundColor: Colors.black87, iconTheme: const IconThemeData(color: Colors.black87), elevation: 0, scrolledUnderElevation: 0, surfaceTintColor: Colors.transparent, shadowColor: Colors.transparent, centerTitle: true, leading: leading, actions: actions, bottom: TabBar( controller: tabController, isScrollable: tabBarScrollable, padding: tabPadding, labelPadding: tabLabelPadding, tabAlignment: tabBarScrollable ? TabAlignment.start : null, dividerHeight: 0, dividerColor: Colors.transparent, tabs: tabLabels.map((String e) => Tab(text: e)).toList(), labelColor: AppConstants.primaryColor, unselectedLabelColor: Colors.grey[600], indicator: UnderlineTabIndicator( borderSide: BorderSide(color: AppConstants.primaryColor, width: 3), ), labelStyle: const TextStyle(fontWeight: FontWeight.bold), ), ); } }