Files
biz_xfj_cloud/lib/sub_screen/page/sub_app.dart
T
dzc 6ef0b6320f feat:日志查看
fix:真机bug
2026-07-27 13:28:35 +08:00

78 lines
2.6 KiB
Dart

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_subscreen_plugin/flutter_subscreen_plugin.dart';
import 'package:forui/forui.dart';
import 'package:pj_supermarket_cloud/common/style/xfj_design_tokens.dart';
import 'package:pj_supermarket_cloud/sub_screen/common/utils/sub_display_coordinator.dart';
import 'package:pj_supermarket_cloud/sub_screen/page/customer_display.dart';
import 'package:pj_supermarket_cloud/sub_screen/page/customer_welcome.dart';
import 'package:pj_supermarket_cloud/sub_screen/page/face_recognition_customer_page.dart';
import 'package:pj_supermarket_cloud/sub_screen/page/reservation_query_display.dart';
class SubAppPage extends StatefulWidget {
const SubAppPage({super.key});
@override
State<SubAppPage> createState() => _SubAppPageState();
}
class _SubAppPageState extends State<SubAppPage> {
late final SubDisplayCoordinator _coordinator;
late final StreamSubscription _streamSubscription;
@override
void initState() {
super.initState();
_coordinator = SubDisplayCoordinator();
// 插件只保留一个副屏监听,避免页面切换后出现重复消费和状态乱序。
_streamSubscription = SubScreenPlugin.viceStream.listen((event) {
_coordinator.handleAction(event.method, event.arguments);
});
}
@override
void dispose() {
_streamSubscription.cancel();
_coordinator.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '顾客显示屏',
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
scaffoldBackgroundColor: XfjDesignTokens.canvas,
colorScheme: ColorScheme.fromSeed(
seedColor: XfjDesignTokens.primary,
surface: XfjDesignTokens.surface,
),
),
home: FTheme(
data: FThemes.zinc.light,
child: AnimatedBuilder(
animation: _coordinator,
builder: (context, _) {
return switch (_coordinator.mode) {
SubDisplayMode.welcome => const CustomerWelcomePage(),
SubDisplayMode.settlement => CustomerDisplayPage(
coordinator: _coordinator.customerCoordinator,
),
SubDisplayMode.reservationQuery => ReservationQueryDisplayPage(
coordinator: _coordinator.reservationCoordinator,
),
SubDisplayMode.faceRecognition => FaceRecognitionCustomerPage(
coordinator: _coordinator.faceRecognitionCoordinator,
),
};
},
),
),
);
}
}