Files
flutterApp/lib/features/home/presentation/pages/home_page.dart

70 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:maibu_satabot_v2/core/app/app_user_cubit.dart';
import 'package:maibu_satabot_v2/features/devices/presentation/bloc/devices_cubit.dart';
import '../../../devices/domain/entities/device_entity.dart';
import '../widgets/ImmersionHeader.dart';
import '../widgets/quick_actions_grid.dart';
import '../widgets/work_params_card.dart';
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
// 同时监听用户和设备状态
final userState = context.watch<AppUserCubit>().state;
final deviceState = context.watch<DevicesCubit>().state;
final currentDevice = deviceState.selectedDevice;
final defaultDevice = DeviceEntity(deviceName: '暂未绑定设备',
productId: 00000,
productName: '', tenantId: 00000, tenantName: ''); // 创建默认实例 在没有绑定设备时,使用默认设备
// 如果没有绑定设备,展示未绑定设备的提示页面
if (currentDevice == null) {
return Scaffold(
backgroundColor: const Color(0xFFF7F7F7),
body: CustomScrollView(
physics: const BouncingScrollPhysics(),
slivers: [
SliverToBoxAdapter(child: ImmersionHeader(device: defaultDevice)),
// 2. 功能网格(保持原有逻辑)
const SliverToBoxAdapter(child: QuickActionsGrid()),
// 3. 作业参数卡片(显示未绑定设备提示)
const SliverToBoxAdapter(child: WorkParamsCard()),
// 4. 地图区域占位
const SliverToBoxAdapter(child: SizedBox(height: 120)),
],
),
);
}
// 如果有绑定设备,正常展示页面
return Scaffold(
backgroundColor: const Color(0xFFF7F7F7),
body: CustomScrollView(
physics: const BouncingScrollPhysics(),
slivers: [
// 1. 沉浸式顶部展示区
SliverToBoxAdapter(child: ImmersionHeader(device: currentDevice)),
// 2. 功能网格
const SliverToBoxAdapter(child: QuickActionsGrid()),
// 3. 作业参数卡片
SliverToBoxAdapter(child: WorkParamsCard()),
// 4. 地图区域占位
const SliverToBoxAdapter(child: SizedBox(height: 120)),
],
),
);
}
}