1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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.backgroundWhite,
- 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,
- ),
- );
- }),
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
|