import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/data/activity.dart'; import 'package:huixiang/data/base_data.dart'; import 'package:huixiang/data/page.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/shared_preference.dart'; import 'package:huixiang/view_widget/item_title.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:shared_preferences/shared_preferences.dart'; class FeaturedActivity extends StatefulWidget { @override State createState() { return _FeaturedActivity(); } } class _FeaturedActivity extends State { ApiService? apiService; @override void initState() { super.initState(); queryActivity(); } List? activityList; queryActivity() async { apiService = ApiService(Dio(), context: context, token: SharedInstance.instance.token); BaseData>? baseData = await apiService?.informationList({ "pageNum": 1, "pageSize": 10, "searchKey": "", "type": 1, "state": 1 }).catchError((error) { return BaseData>()..isSuccess = false; }); if (baseData?.isSuccess ?? false) { activityList = baseData?.data?.list ?? []; if (activityList!.length == 1) activityList!.add(activityList![0]); if (activityList!.length == 2) activityList!.add(activityList![1]); } } @override Widget build(BuildContext context) { return Column( children: [ ItemTitle( text: S.of(context).jingxuanhuodong, imgPath: "assets/image/home_activity.webp", moreText: S.of(context).chakangengduo, onTap: () { Navigator.of(context).pushNamed('/router/activity_list'); }, ), SizedBox( height: 10.h, ), Container( margin: EdgeInsets.symmetric(horizontal: 9.w), child: Row( children: [ if (activityList?.isNotEmpty ?? false) GestureDetector( onTap: () { Navigator.of(context).pushNamed( '/router/web_page', arguments: {"activityId": activityList?[0].id}, ); }, child: Container( child: stackItem(18.sp, activityList?[0]), margin: EdgeInsets.symmetric(horizontal: 5.w), width: (MediaQuery.of(context).size.width - 42) / 2, height: 125.h, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: Colors.red, image: DecorationImage( image: NetworkImage( activityList?[0].coverImg ?? "", ), fit: BoxFit.cover, ), ), ), ), if (activityList?.isNotEmpty ?? false) Expanded( child: Container( child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ GestureDetector( onTap: () { Navigator.of(context).pushNamed( '/router/web_page', arguments: {"activityId": activityList?[1].id}, ); }, child: Container( child: stackItem(12.sp, activityList?[1]), margin: EdgeInsets.symmetric(horizontal: 5.w), width: (MediaQuery.of(context).size.width - 42) / 2, height:125.h, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: Colors.green, image: DecorationImage( image: NetworkImage( activityList?[1].coverImg ?? "", ), fit: BoxFit.cover, ), ), ), ), ], ), ), ), ], ), ), SizedBox( height: 28.h, ), ], ); } Widget stackItem(double textSize, Activity? activity) { return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: Color.fromARGB(80, 0, 0, 0), ), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( margin: EdgeInsets.only(left: 8, top: 8), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( activity?.mainTitle ?? "", overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle( fontWeight: MyFontWeight.semi_bold, fontSize: 14.sp, color: Colors.white, ), ), SizedBox( height: 2, ), Text( activity?.viceTitle ?? "", style: TextStyle( fontWeight: MyFontWeight.semi_bold, fontSize: 12.sp, color: Colors.white, ), ), ], ), ), Row( children: [ Container( // width: 52.w, margin: EdgeInsets.only(left: 8, bottom: 8), padding: EdgeInsets.symmetric( vertical: 4.h, horizontal: 8.w, ), decoration: BoxDecoration( color: Color(0xFF32A060), borderRadius: BorderRadius.circular(20), ), alignment: Alignment.center, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( S.of(context).liaojie, style: TextStyle( fontSize: 10.sp, fontWeight: MyFontWeight.medium, color: Colors.white, ), ), Icon( Icons.keyboard_arrow_right, color: Colors.white, size: 12, ), ], ), ), Spacer() ], ), ], ), ); } }