aslan-flutter/lib/chatvibe_features/room/rank/room_gift_rank_page.dart
2026-07-01 18:25:58 +08:00

97 lines
3.2 KiB
Dart

import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:aslan/chatvibe_features/room/rank/room_gift_rank_tab_page.dart';
import 'package:provider/provider.dart';
import 'package:aslan/app_localizations.dart';
import 'package:aslan/chatvibe_domain/models/res/at_room_reward_info_res.dart';
import 'package:aslan/chatvibe_managers/rtc_manager.dart';
import '../../../chatvibe_data/models/enum/at_date_type.dart';
class RoomGiftRankPage extends StatefulWidget {
@override
_RoomGiftRankPageState createState() => _RoomGiftRankPageState();
}
class _RoomGiftRankPageState extends State<RoomGiftRankPage>
with SingleTickerProviderStateMixin {
late TabController _tabController;
final List<Widget> _pages = [];
final List<Widget> _tabs = [];
ATRoomRewardInfoRes? res;
@override
void initState() {
super.initState();
String roomId =
Provider.of<RtcProvider>(
context,
listen: false,
).currenRoom?.roomProfile?.roomProfile?.id ??
"";
_pages.add(RoomGiftRankTabPage(roomId, ATDateType.DAY.name));
_pages.add(RoomGiftRankTabPage(roomId, ATDateType.WEEK.name));
_pages.add(RoomGiftRankTabPage(roomId, ATDateType.MONTH.name));
_tabController = TabController(length: _pages.length, vsync: this);
}
@override
Widget build(BuildContext context) {
_tabs.clear();
_tabs.add(Tab(text: ATAppLocalizations.of(context)!.daily));
_tabs.add(Tab(text: ATAppLocalizations.of(context)!.weekly));
_tabs.add(Tab(text: ATAppLocalizations.of(context)!.monthly));
return SafeArea(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(15.w), topRight: Radius.circular(15.w)),
image: DecorationImage(
image: AssetImage(
"atu_images/room/at_icon_room_task_bg_com.png",
),
fit: BoxFit.cover,
),
),
height: 360.w,
child: Column(
children: [
TabBar(
tabAlignment: TabAlignment.start,
labelPadding: EdgeInsets.symmetric(horizontal: 12.w),
labelColor: Colors.white,
isScrollable: true,
indicator: BoxDecoration(),
unselectedLabelColor: Colors.white54,
labelStyle: TextStyle(
fontSize: 17.sp,
fontWeight: FontWeight.w600,
),
unselectedLabelStyle: TextStyle(
fontSize: 15.sp,
fontWeight: FontWeight.w500,
),
indicatorColor: Colors.transparent,
dividerColor: Colors.transparent,
controller: _tabController,
tabs: _tabs,
),
Expanded(
child: TabBarView(
controller: _tabController,
children: _pages,
),
),
],
),
),
],
),
);
}
}