import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_ui/components/at_compontent.dart'; import 'package:aslan/chatvibe_ui/components/text/at_text.dart'; import 'package:aslan/chatvibe_ui/components/at_tts.dart'; import 'package:aslan/chatvibe_core/utilities/at_loading_manager.dart'; import 'package:aslan/chatvibe_ui/widgets/sgin/recive_award_sgin_page.dart'; import 'package:aslan/chatvibe_data/sources/repositories/user_repository_impl.dart'; import '../../../chatvibe_data/models/enum/at_activity_reward_props_type.dart'; import '../../../chatvibe_domain/models/res/at_sign_in_res.dart'; ///签到页面 class SginPage extends StatefulWidget { bool fromHome = false; SginPage(this.fromHome); @override _SginPageState createState() => _SginPageState(); } class _SginPageState extends State { ATSignInRes? res; //是否已经签到 bool isSgined = true; @override void initState() { super.initState(); sginListAward(); AccountRepository() .checkInToday() .then((result) { isSgined = result; setState(() {}); }) .catchError((e) {}); } @override Widget build(BuildContext context) { return GestureDetector( child: Container( height: 465.w, margin: EdgeInsets.symmetric(horizontal: 15.w), alignment: AlignmentDirectional.center, decoration: BoxDecoration( image: DecorationImage( image: AssetImage("atu_images/index/at_icon_sgin_bg.png"), fit: BoxFit.fill, ), ), child: res != null ? Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 105.w), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox(width: 15.w), _buildItme( 1, res?.rewards?[0].propsGroup?.activityRewardProps?[0], res?.days, ), _buildItme( 2, res?.rewards?[0].propsGroup?.activityRewardProps?[1], res?.days, ), _buildItme( 3, res?.rewards?[0].propsGroup?.activityRewardProps?[2], res?.days, ), _buildItme( 4, res?.rewards?[0].propsGroup?.activityRewardProps?[3], res?.days, ), SizedBox(width: 15.w), ], ), SizedBox(height: 10.w), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox(width: 15.w), _buildItme( 5, res?.rewards?[0].propsGroup?.activityRewardProps?[4], res?.days, ), _buildItme( 6, res?.rewards?[0].propsGroup?.activityRewardProps?[5], res?.days, ), _buildItme( 7, res?.rewards?[0].propsGroup?.activityRewardProps?[6], res?.days, ), SizedBox(width: 15.w), ], ), SizedBox(height: 10.w), GestureDetector( child: Container( width: 200.w, height: 55.w, alignment: AlignmentDirectional.center, decoration: BoxDecoration( image: DecorationImage( image: AssetImage( isSgined ? "atu_images/index/at_icon_signedin_bg.png" : "atu_images/index/at_icon_sgin_rec_bg.png", ), ), ), child: text( isSgined ? ATAppLocalizations.of(context)!.signedin : ATAppLocalizations.of(context)!.receive, fontWeight: FontWeight.bold, fontSize: 18.sp, textColor: Colors.white, ), ), onTap: () { if (isSgined) { return; } receive(); }, ), SizedBox(height: 5.w), Container( margin: EdgeInsets.symmetric(horizontal: 30.w), child: text( ATAppLocalizations.of(context)!.sginTips, maxLines: 4, textColor: Color(0xffAAAAAA), lineHeight: 1.2, letterSpacing: 0.1, fontSize: 12.sp, fontWeight: FontWeight.w600, ), ), SizedBox(height: 10.w), ], ) : Container(), ), onTap: () { SmartDialog.dismiss(tag: "showSginListAward"); }, ); } _buildItme(int tagDay, ActivityRewardProps? reward, num? days) { return tagDay == 7 ? Column( children: [ SizedBox( width: 147.w, height: 85.w, child: Stack( alignment: AlignmentDirectional.center, children: [ Image.asset("atu_images/index/at_icon_sgin_item_day7_bg1.png"), tagDay < (days ?? 0) + 1 ? Image.asset("atu_images/index/at_icon_sgin_item_day7_bg2.png") : Container(), reward?.type == ATActivityRewardATPropsType.GOLD.name ? Image.asset( "atu_images/general/at_icon_jb.png", width: 42.w, height: 42.w, ) : netImage( url: reward?.cover ?? "", width: 42.w, height: 42.w, ), Positioned( top: 0, right: 10.w, child: text( "$tagDay", fontSize: 9.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ), PositionedDirectional( bottom: 0, child: reward?.type == ATActivityRewardATPropsType.PROPS.name ? Row( children: [ text( "${reward?.quantity} ${ATAppLocalizations.of(context)!.day}", fontSize: 12.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ], ) : Row( children: [ SizedBox(width: 2.w), text( "${ATAppLocalizations.of(context)!.coins4}*${reward?.amount}", fontSize: 12.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ], ), ), days == tagDay ? Image.asset("atu_images/index/at_icon_sgin_item_day7_bg3.png") : Container(), ], ), ), ], ) : Column( children: [ Container( width: 70.w, height: 85.w, child: Stack( alignment: AlignmentDirectional.center, children: [ Image.asset("atu_images/index/at_icon_sgin_item_bg3.png"), days == tagDay - 1 ? Image.asset("atu_images/index/at_icon_sgin_item_bg1.png") : Container(), reward?.type == ATActivityRewardATPropsType.GOLD.name ? Image.asset( "atu_images/general/at_icon_jb.png", width: 42.w, height: 42.w, ) : netImage( url: reward?.cover ?? "", width: 42.w, height: 42.w, ), Positioned( top: 0, right: 11.w, child: text( "$tagDay", fontSize: 9.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ), PositionedDirectional( bottom: 0, child: reward?.type == ATActivityRewardATPropsType.PROPS.name ? Row( children: [ text( "${reward?.quantity} ${ATAppLocalizations.of(context)!.day}", fontSize: 12.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ], ) : Row( children: [ SizedBox(width: 2.w), text( "${ATAppLocalizations.of(context)!.coins4}*${reward?.amount}", fontSize: 12.sp, textColor: Colors.white, fontWeight: FontWeight.w600, ), ], ), ), tagDay < (days ?? 0) + 1 ? Image.asset("atu_images/index/at_icon_sgin_item_bg2.png") : Container(), ], ), ), ], ); } void sginListAward() async { res = await AccountRepository().sginListAward(); setState(() {}); } ///签到 void receive() { ATLoadingManager.exhibitOperation(); String ruleId = res?.rewards?[0].rule?.id ?? ""; String resourceGroupId = res?.rewards?[0].propsGroup?.id ?? ""; AccountRepository() .checkInReceive(ruleId, resourceGroupId) .then((resNum) { ATLoadingManager.veilRoutine(); ATTts.show(ATAppLocalizations.of(context)!.checkInSuccessful); SmartDialog.dismiss(tag: "showSginListAward"); ActivityRewardProps? awd = res?.rewards?[0].propsGroup?.activityRewardProps![resNum - 1]; SmartDialog.show( tag: "showReciveAwardSgin", alignment: Alignment.center, animationType: SmartAnimationType.fade, builder: (_) { return ReciveAwardSginPage(awd, resNum, widget.fromHome); }, ); }) .catchError((e) { ATLoadingManager.veilRoutine(); }); } }