70 lines
2.4 KiB
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)),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
}
|