import 'package:flutter/material.dart'; import 'package:skywood/global/client/play_client.dart'; import 'package:skywood/global/client/user_client.dart'; import 'package:skywood/global/tool/sky_log.dart'; import 'package:skywood/main/lib_file.dart'; import 'package:skywood/pages/home/widgets/daily_quest_widget.dart'; import 'package:skywood/pages/home/widgets/home_cate_widget.dart'; import 'package:skywood/pages/home/widgets/hot_cartridge_widget.dart'; import 'package:skywood/pages/home/widgets/rank_list_widget.dart'; import 'package:skywood/pages/widgets/common_bg_page.dart'; import 'package:skywood/utils/models/drama/skywood_category.dart'; import 'package:skywood/utils/models/drama/skywood_home.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @override State createState() { return _MainRootState(); } } class _MainRootState extends State { List _homeData = []; List _categories = []; @override void initState() { super.initState(); _getHomeData(); _getDramaCate(); } void _getHomeData() { // home_v3_recommand new_recommand week_ranking week_highest_recommend // marquee home_banner get_details_recommand PlayClient.getHomeData().then((value) { for (SkywoodHome element in value) { print('lele: ${element.moduleKey} : ${element.dataList.length}'); } setState(() { _homeData = value; }); }); } void _getDramaCate() { PlayClient.getCategoriesList().then((value) { print('cateeeee: ${value.length}'); setState(() { _categories = value; }); }); } @override Widget build(BuildContext context) { return CommonBgPage( child: SafeArea( child: _homeData.isEmpty ? SizedBox() : CustomScrollView( slivers: [ _buildTopTwoImgs(), _buildSpace(), DailyQuestWidget( dramaList: _homeData.firstWhere((element) => element.moduleKey == 'home_v3_recommand').dataList, ), _buildSpace(height: 10), _buildTitleImg(ConstImg.homeTitleMystery), _buildSpace(), // 345 355 _buildTitleImg( ConstImg.homeOpenNowBox, padding: EdgeInsets.symmetric(horizontal: 15.w), height: 355.h, ), _buildSpace(height: 10), _buildTitleImg(ConstImg.homeTitleHot), _buildSpace(), SliverPadding( padding: EdgeInsets.symmetric(horizontal: 15.w), sliver: HotCartridgeWidget( dramaList: _homeData.firstWhere((element) => element.moduleKey == 'new_recommand').dataList, ), ), _buildSpace(height: 10), _buildTitleImg(ConstImg.homeTitleWeekly), SliverPadding( padding: EdgeInsets.symmetric(horizontal: 15.w), sliver: SliverToBoxAdapter( child: RankListWidget( dramaList: _homeData.firstWhere((element) => element.moduleKey == 'week_ranking').dataList, ), ), ), _buildTitleImg(ConstImg.homeTitleHotCate), SliverPadding( padding: EdgeInsets.only(left: 15.w, right: 15.w, top: 20.h), sliver: SliverToBoxAdapter( child: HomeCateWidget( categories: _categories, ), ), ), _buildSpace(height: 20), ], ), ), ); } SliverToBoxAdapter _buildTopTwoImgs() { // 104-76 return SliverToBoxAdapter( child: Stack( children: [ SizedBox(width: double.infinity, height: (204 + 104 - 28).h), Container( height: 204.h, padding: EdgeInsets.only(left: 25.w, top: 3.h, right: 25.w), child: HelpImg.asset(ConstImg.homeTopBg, fit: BoxFit.fill), ), Positioned( top: (204 - 28).h, height: 104.h, width: AppScreen.screenWidth, child: HelpImg.asset(ConstImg.homeTitleDaily, fit: BoxFit.fill), ), ], ), ); } SliverToBoxAdapter _buildSpace({double height = 20}) { return SliverToBoxAdapter(child: SizedBox(height: height.h)); } SliverToBoxAdapter _buildTitleImg( String imgName, { double? height, double? width, EdgeInsets? padding, }) { // 104-76 return SliverToBoxAdapter( child: Container( padding: padding ?? EdgeInsets.zero, width: width ?? double.infinity, height: height ?? 104.h, child: HelpImg.asset(imgName, fit: BoxFit.fill), ), ); } }