所有一级页面和不分二级页面

This commit is contained in:
2026-05-25 12:58:29 +08:00
parent b9f747de05
commit afef5c4ef1
158 changed files with 13082 additions and 1602 deletions

View File

@@ -3,11 +3,14 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:maibu_satabot_v2/features/ai/presentation/pages/ai_page.dart';
import 'package:maibu_satabot_v2/features/home/presentation/pages/home_page.dart';
import 'package:maibu_satabot_v2/features/my/presentation/pages/my_page.dart';
import 'package:maibu_satabot_v2/features/main_container/presentation/bloc/tab_config_cubit.dart';
import 'package:maibu_satabot_v2/features/main_container/presentation/cubit/tab_config_cubit.dart';
import 'package:maibu_satabot_v2/features/main_container/presentation/widgets/custom_bottom_nav_bar.dart';
import 'package:maibu_satabot_v2/features/v2/home/presentation/pages/home_v2_page.dart';
import 'package:maibu_satabot_v2/features/v2/device_list/presentation/pages/device_status_page.dart';
import 'package:maibu_satabot_v2/features/v2/workorder/presentation/pages/workorder_page.dart';
import 'package:maibu_satabot_v2/features/v2/report/presentation/pages/report_page.dart';
import '../../../waring_center/presentation/pages/warning_center_page.dart';
import '../../../v2/waring_center/presentation/pages/alarm_center_page.dart';
class CustomMainContainer extends StatefulWidget {
const CustomMainContainer({super.key});
@@ -16,28 +19,37 @@ class CustomMainContainer extends StatefulWidget {
State<CustomMainContainer> createState() => _CustomMainContainerState();
}
class _CustomMainContainerState extends State<CustomMainContainer> with AutomaticKeepAliveClientMixin {
class _CustomMainContainerState extends State<CustomMainContainer>
with AutomaticKeepAliveClientMixin {
@override
bool get wantKeepAlive => true; // 保持页面状态
@override
Widget build(BuildContext context) {
super.build(context);
debugPrint('🔍 [CustomMainContainer] build 被调用');
return BlocBuilder<TabConfigCubit, TabConfigState>(
builder: (context, state) {
if (state is! TabConfigLoaded) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
final enabledTabs = state.config.enabledItems;
final currentIndex = state.selectedIndex;
debugPrint('🔍 [CustomMainContainer] enabledTabs=${enabledTabs.length}, currentIndex=$currentIndex');
debugPrint('🔍 [CustomMainContainer] enabledTabs IDs=${enabledTabs.map((e) => e.id).toList()}');
debugPrint(
'🔍 [CustomMainContainer] enabledTabs=${enabledTabs.length}, currentIndex=$currentIndex',
);
debugPrint(
'🔍 [CustomMainContainer] enabledTabs IDs=${enabledTabs.map((e) => e.id).toList()}',
);
if (enabledTabs.isEmpty) {
return const Scaffold(
body: Center(child: Text('请至少启用一个Tab')),
);
return const Scaffold(body: Center(child: Text('请至少启用一个Tab')));
}
return Scaffold(
@@ -45,7 +57,21 @@ class _CustomMainContainerState extends State<CustomMainContainer> with Automati
index: currentIndex,
children: _buildPages(enabledTabs),
),
bottomNavigationBar: const CustomBottomNavBar(),
bottomNavigationBar: Column(
mainAxisSize: MainAxisSize.min,
children: [
// 调试信息:显示当前 Tab ID
Container(
color: Colors.yellow.withOpacity(0.8),
padding: const EdgeInsets.all(4),
child: Text(
'当前选中Tab索引: $currentIndex, ID: ${enabledTabs[currentIndex].id}',
style: const TextStyle(fontSize: 10, color: Colors.black),
),
),
const CustomBottomNavBar(),
],
),
);
},
);
@@ -53,19 +79,32 @@ class _CustomMainContainerState extends State<CustomMainContainer> with Automati
List<Widget> _buildPages(List<dynamic> enabledTabs) {
return enabledTabs.map((tab) {
debugPrint('🔍 [buildPages] Tab ID: ${tab.id}, Name: ${tab.name}');
switch (tab.id) {
case 'home_v2':
return const HomeV2Page();
case 'home':
return const HomePage();
debugPrint('✅ 匹配到 home_v2');
return const HomeV2Page(key: ValueKey('home_v2'));
case 'device':
debugPrint('✅ 匹配到 device');
return const DeviceStatusPage(key: ValueKey('device'));
case 'ai':
return const AiPage();
debugPrint('✅ 匹配到 ai');
return const AiPage(key: ValueKey('ai'));
case 'warning':
return const WarningCenterPage();
debugPrint('✅ 匹配到 warning');
return const AlarmCenterPage(key: ValueKey('warning'));
case 'workorder':
debugPrint('✅ 匹配到 workorder');
return const WorkOrderPage(key: ValueKey('workorder'));
case 'report':
debugPrint('✅ 匹配到 report');
return const ReportPage(key: ValueKey('report'));
case 'my':
return const MyPage();
debugPrint('✅ 匹配到 my');
return const MyPage(key: ValueKey('my'));
default:
return const HomePage();
debugPrint('❌ 未匹配到 Tab ID: ${tab.id}');
return const SizedBox();
}
}).toList();
}

View File

@@ -68,10 +68,16 @@ class TabSettingsPage extends StatelessWidget {
return Icons.home_rounded;
case 'grid_view_rounded':
return Icons.grid_view_rounded;
case 'devices_rounded':
return Icons.devices_rounded;
case 'auto_awesome_rounded':
return Icons.auto_awesome_rounded;
case 'warning_amber_rounded':
return Icons.warning_amber_rounded;
case 'assignment_rounded':
return Icons.assignment_rounded;
case 'post_add_rounded':
return Icons.post_add_rounded;
case 'person_rounded':
return Icons.person_rounded;
default: