| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- import 'package:flutter/material.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- import 'package:get/get.dart';
- import 'package:keyboard/base/base_page.dart';
- import 'package:keyboard/resource/string.gen.dart';
- import '../../resource/assets.gen.dart';
- import '../../resource/colors.gen.dart';
- import '../../router/app_pages.dart';
- import '../../widget/tabbar/custom_tab_indicator.dart';
- import 'intimacy_analyse_controller.dart';
- /// 亲密度报告页
- class IntimacyAnalysePage extends BasePage<IntimacyAnalyseController> {
- const IntimacyAnalysePage({super.key});
- @override
- bool immersive() {
- // 开启沉浸式
- return true;
- }
- @override
- backgroundColor() {
- return Colors.transparent;
- }
- static start() {
- Get.toNamed(RoutePath.intimacyAnalyse);
- }
- @override
- Widget buildBody(BuildContext context) {
- return Scaffold(
- backgroundColor: backgroundColor(),
- body: Container(
- decoration: BoxDecoration(
- image: DecorationImage(
- image: Assets.images.bgIntimacyAnalyse.provider(),
- fit: BoxFit.fill,
- ),
- ),
- child: Column(
- children: [_buildStatusBar(), _buildTopBar(), _buildContent()],
- ),
- ),
- );
- }
- /// 导航栏占位
- Widget _buildStatusBar() {
- return Container(
- height: MediaQuery.of(Get.context!).padding.top,
- color: backgroundColor(),
- );
- }
- /// 顶部栏
- Widget _buildTopBar() {
- return Container(
- height: kToolbarHeight,
- width: double.infinity,
- padding: EdgeInsets.symmetric(horizontal: 16.0),
- child: ConstrainedBox(
- constraints: BoxConstraints(minWidth: double.infinity),
- child: Stack(
- alignment: Alignment.center,
- children: [
- // 返回按钮
- Positioned(
- left: 16.0,
- child: GestureDetector(
- onTap: controller.clickBack,
- child: Assets.images.iconWhiteBackArrow.image(
- width: 24.w,
- height: 24.h,
- ),
- ),
- ),
- // TabBar
- Positioned(child: _buildTabBar()),
- ],
- ),
- ),
- );
- }
- /// 指示器
- TabBar _buildTabBar() {
- return TabBar(
- // 是否可以滚动
- isScrollable: true,
- // 去除底部的黑线
- dividerHeight: 0,
- // 去除左边的边距,让Tab居中
- tabAlignment: TabAlignment.start,
- // 指示器的颜色
- indicator: _buildGradientLineIndicator(),
- // 选中时的颜色
- labelStyle: TextStyle(
- fontSize: 17.sp,
- fontWeight: FontWeight.bold,
- color: ColorName.white,
- ),
- // 未选中时的颜色
- unselectedLabelStyle: TextStyle(
- fontSize: 17.sp,
- color: ColorName.white70,
- ),
- // 配置Tab数据
- tabs:
- controller.tabBarList.map((tab) {
- return Tab(text: tab);
- }).toList(),
- controller: controller.tabController,
- onTap: (index) {
- controller.handleTabChange(index);
- },
- );
- }
- // 自定义渐变指示器
- CustomTabIndicator _buildGradientLineIndicator() {
- return CustomTabIndicator(width: 16.0, strokeCap: StrokeCap.round);
- }
- /// PageView
- Widget _buildContent() {
- return Expanded(
- child: PageView(
- controller: controller.pageController,
- onPageChanged: (index) {
- controller.handlePageChange(index);
- },
- children: [
- Center(child: Text(StringName.intimacyAnalyseTabReport)),
- Center(child: Text(StringName.intimacyAnalyseTabScreenshotReply)),
- ],
- ),
- );
- }
- }
|