Browse Source

设施的地址Banner

liukai 4 months ago
parent
commit
5f4ce6bbae

+ 1 - 1
packages/cpt_facility/lib/modules/book_confirm/book_confirm_view_model.g.dart

@@ -7,7 +7,7 @@ part of 'book_confirm_view_model.dart';
 // **************************************************************************
 
 String _$bookConfirmViewModelHash() =>
-    r'94f61f3b11ea3f6bc8baa1abaccf013230ecf2e4';
+    r'fdd3f7fffe200110bd14f0d3b2ce2d83c1d6a74a';
 
 /// See also [BookConfirmViewModel].
 @ProviderFor(BookConfirmViewModel)

+ 15 - 1
packages/cpt_facility/lib/modules/booking/facility_booking_page.dart

@@ -1,5 +1,6 @@
 import 'dart:math';
 
+import 'package:cpt_facility/modules/location/facility_location_page.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
@@ -49,7 +50,20 @@ class FacilityBookingPage extends HookConsumerWidget {
     }, []);
 
     return Scaffold(
-      appBar: MyAppBar.appBar(context, "Kids party room", backgroundColor: context.appColors.whiteBG),
+      appBar: MyAppBar.appBar(context, "Kids party room", backgroundColor: context.appColors.whiteBG, actions: [
+        //去设施小区的定位图片
+        const MyAssetImage(
+          Assets.facilityTitleLocationIcon,
+          width: 44,
+          height: 44,
+        ).marginOnly(right: 3).onTap(() {
+          FacilityLocationPage.startInstance(context: context, imageUrls: [
+            "https://mz.eastday.com/63074197.jpeg",
+            "https://t10.baidu.com/it/u=3562774827,189123978&fm=30&app=106&f=PNG?w=640&h=479&s=DFBA6EC80A72B7CC02FC011F0300D0C2",
+            "https://img1.baidu.com/it/u=4090167392,148087489&fm=253&fmt=auto&app=138&f=JPEG?w=484&h=300"
+          ]);
+        }),
+      ]),
       backgroundColor: context.appColors.backgroundDark,
       body: Column(
         mainAxisSize: MainAxisSize.max,

+ 1 - 1
packages/cpt_facility/lib/modules/booking/facility_booking_view_model.g.dart

@@ -7,7 +7,7 @@ part of 'facility_booking_view_model.dart';
 // **************************************************************************
 
 String _$facilityBookingViewModelHash() =>
-    r'c6d1d64d1d7100b6864c53327150a9893201e3a9';
+    r'c9a681e01791881d17dc58b3a8e45153e6fe62ad';
 
 /// See also [FacilityBookingViewModel].
 @ProviderFor(FacilityBookingViewModel)

+ 88 - 0
packages/cpt_facility/lib/modules/location/facility_location_page.dart

@@ -0,0 +1,88 @@
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:auto_route/auto_route.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:router/ext/auto_router_extensions.dart';
+import 'package:widgets/my_appbar.dart';
+import 'package:widgets/my_load_image.dart';
+
+import '../../router/page/facility_page_router.dart';
+
+@RoutePage()
+class FacilityLocationPage extends HookConsumerWidget {
+  final List<String> imageUrls;
+
+  const FacilityLocationPage({Key? key, required this.imageUrls}) : super(key: key);
+
+  //启动当前页面
+  static void startInstance({BuildContext? context, required List<String> imageUrls}) {
+    if (context != null) {
+      context.router.push(FacilityLocationPageRoute(imageUrls: imageUrls));
+    } else {
+      appRouter.push(FacilityLocationPageRoute(imageUrls: imageUrls));
+    }
+  }
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+
+    final currentPage = useState(0); // 记录当前页索引
+    final pageController = usePageController(); // 创建 PageController
+
+    // 监听页面变化
+    useEffect(() {
+      pageController.addListener(() {
+        currentPage.value = pageController.page!.round();
+      });
+      return () => pageController.dispose();
+    }, [pageController]);
+
+    return Scaffold(
+      appBar: MyAppBar.appBar(
+        context,
+        "Kids party room",
+      ),
+      backgroundColor: context.appColors.whiteBG,
+      body: Container(
+        width: double.infinity,
+        height: double.infinity,
+        child: Stack(
+          children: [
+            PageView.builder(
+              controller: pageController,
+              itemCount: imageUrls.length,
+              itemBuilder: (context, index) {
+                return MyLoadImage(
+                  imageUrls[index],
+                  fit: BoxFit.fitWidth,
+                );
+              },
+            ),
+
+            // 底部指示器
+            Positioned(
+              bottom: 36,
+              left: 0,
+              right: 0,
+              child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: List.generate(imageUrls.length, (index) {
+                  return Container(
+                    margin: const EdgeInsets.symmetric(horizontal: 4),
+                    height: 8,
+                    width: 8,
+                    decoration: BoxDecoration(
+                      shape: BoxShape.circle,
+                      color: currentPage.value == index ? Colors.blue : Colors.grey,
+                    ),
+                  );
+                }),
+              ),
+            ),
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 2 - 0
packages/cpt_facility/lib/router/page/facility_page_router.dart

@@ -11,6 +11,7 @@ import '../../modules/facility/history/facility_history_screen.dart';
 import '../../modules/detail/facility_detail_page.dart';
 import '../../modules/booking/facility_booking_page.dart';
 import '../../modules/book_confirm/book_confirm_page.dart';
+import '../../modules/location/facility_location_page.dart';
 
 part 'facility_page_router.gr.dart';
 
@@ -35,5 +36,6 @@ class FacilityPageRouter extends _$FacilityPageRouter {
         CustomRoute(page: FacilityDetailPageRoute.page, path: RouterPath.facilityDetail, transitionsBuilder: applySlideTransition),
         CustomRoute(page: FacilityBookingPageRoute.page, path: RouterPath.facilityBook, transitionsBuilder: applySlideTransition),
         CustomRoute(page: BookConfirmPageRoute.page, path: RouterPath.facilityBookConfirm, transitionsBuilder: applySlideTransition),
+        CustomRoute(page: FacilityLocationPageRoute.page, path: RouterPath.facilityLocation, transitionsBuilder: applySlideTransition),
       ];
 }

+ 49 - 0
packages/cpt_facility/lib/router/page/facility_page_router.gr.dart

@@ -57,6 +57,16 @@ abstract class _$FacilityPageRouter extends RootStackRouter {
         child: FacilityHistoryScreen(),
       );
     },
+    FacilityLocationPageRoute.name: (routeData) {
+      final args = routeData.argsAs<FacilityLocationPageRouteArgs>();
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: FacilityLocationPage(
+          key: args.key,
+          imageUrls: args.imageUrls,
+        ),
+      );
+    },
     FacilityPageRoute.name: (routeData) {
       return AutoRoutePage<dynamic>(
         routeData: routeData,
@@ -165,6 +175,45 @@ class FacilityHistoryPageRoute extends PageRouteInfo<void> {
 }
 
 /// generated route for
+/// [FacilityLocationPage]
+class FacilityLocationPageRoute
+    extends PageRouteInfo<FacilityLocationPageRouteArgs> {
+  FacilityLocationPageRoute({
+    Key? key,
+    required List<String> imageUrls,
+    List<PageRouteInfo>? children,
+  }) : super(
+          FacilityLocationPageRoute.name,
+          args: FacilityLocationPageRouteArgs(
+            key: key,
+            imageUrls: imageUrls,
+          ),
+          initialChildren: children,
+        );
+
+  static const String name = 'FacilityLocationPageRoute';
+
+  static const PageInfo<FacilityLocationPageRouteArgs> page =
+      PageInfo<FacilityLocationPageRouteArgs>(name);
+}
+
+class FacilityLocationPageRouteArgs {
+  const FacilityLocationPageRouteArgs({
+    this.key,
+    required this.imageUrls,
+  });
+
+  final Key? key;
+
+  final List<String> imageUrls;
+
+  @override
+  String toString() {
+    return 'FacilityLocationPageRouteArgs{key: $key, imageUrls: $imageUrls}';
+  }
+}
+
+/// generated route for
 /// [FacilityPage]
 class FacilityPageRoute extends PageRouteInfo<void> {
   const FacilityPageRoute({List<PageRouteInfo>? children})

+ 1 - 0
packages/cs_router/lib/path/router_path.dart

@@ -61,6 +61,7 @@ class RouterPath {
   static const facilityDetail = '/facility/detail';
   static const facilityBook = '/facility/book';
   static const facilityBookConfirm = '/facility/book/confirm';
+  static const facilityLocation = '/facility/location';
 
   //表单
   static const form = '/form';