| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- import 'package:clean/base/base_page.dart';
- import 'package:clean/module/splash/intro/intro_controller.dart';
- import 'package:clean/resource/assets.gen.dart';
- import 'package:clean/resource/colors.gen.dart';
- import 'package:clean/router/app_pages.dart';
- import 'package:flutter/Material.dart';
- import 'package:flutter/cupertino.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- import 'package:get/get.dart';
- import 'package:get/get_core/src/get_main.dart';
- import 'package:lottie/lottie.dart';
- class IntroPage extends BasePage<IntroController> {
- IntroPage({Key? key}) : super(key: key);
- static void start() {
- Get.offNamed(RoutePath.intro);
- }
- @override
- bool immersive() {
- return true;
- }
- @override
- bool statusBarDarkFont() {
- return false;
- }
- @override
- Widget buildBody(BuildContext context) {
- return Stack(children: [
- Container(
- width: double.infinity,
- height: double.infinity,
- child: SafeArea(
- child: Container(
- child: Column(
- children: [
- Flexible(
- child: PageView(
- controller: controller.pageController.value,
- onPageChanged: (index) {
- controller.currentPage.value = index;
- },
- children: List.generate(controller.pageList.length, (index) {
- return buildPage(controller.pageList[index]);
- }),
- ),
- ),
- buildIndicator(),
- SizedBox(height: 15.h),
- GestureDetector(
- onTap: () {
- controller.clickContinue();
- },
- child: Container(
- width: 316.w,
- height: 48.h,
- alignment: Alignment.center,
- decoration: ShapeDecoration(
- color: Color(0xFF0279FB),
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(24.r),
- ),
- ),
- child: Text(
- 'CONTINUE',
- style: TextStyle(
- color: Colors.white,
- fontSize: 16.sp,
- fontWeight: FontWeight.w500,
- ),
- ),
- ),
- ),
- SizedBox(height: 76.h),
- ],
- ))),
- ),
- IgnorePointer(
- child: Assets.images.bgPhotoSelectedPreviewFinish.image(
- width: 360.w,
- height: 335.h,
- ),
- ),
- ]);
- }
- Widget buildIndicator() {
- return Obx(() {
- return Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: List.generate(controller.pageList.length, (index) {
- return AnimatedContainer(
- duration: const Duration(milliseconds: 500),
- margin: EdgeInsets.symmetric(horizontal: 5.h),
- height: 10,
- width: controller.currentPage.value == index ? 10.w : 10.w,
- // width: controller.currentPage.value == index ? 20.w : 10.w, 选中为长方形
- decoration: BoxDecoration(
- color: controller.currentPage.value == index
- ? ColorName.white
- : ColorName.white.withValues(alpha: 0.25),
- borderRadius: BorderRadius.circular(5.r),
- ),
- );
- }),
- );
- });
- }
- Widget buildPage(PageBean pageBean) {
- return Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(
- pageBean.title,
- textAlign: TextAlign.center,
- style: TextStyle(
- color: Colors.white,
- fontSize: 24,
- fontWeight: FontWeight.w500,
- height: 1.25,
- ),
- ),
- Lottie.asset(
- pageBean.animUrl,
- width: 360.w,
- height: 329.w,
- repeat: true,
- ),
- ],
- );
- }
- }
|