2026-07-01 18:25:58 +08:00

85 lines
2.4 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:aslan/chatvibe_ui/components/at_compontent.dart';
import 'package:aslan/chatvibe_domain/models/res/gift_res.dart';
import 'package:aslan/app_localizations.dart';
import 'package:aslan/chatvibe_ui/components/text/at_text.dart';
import 'package:aslan/chatvibe_data/sources/repositories/gift_repository_imp.dart';
///礼物墙
class GiftwallPage extends StatefulWidget {
String tageId = "";
GiftwallPage(this.tageId);
@override
_GiftwallPageState createState() => _GiftwallPageState();
}
class _GiftwallPageState extends State<GiftwallPage> {
List<ChatVibeGiftRes> giftWallList = [];
@override
void initState() {
super.initState();
GiftRepositoryImp()
.giftWall(widget.tageId)
.then((result) {
giftWallList = result;
setState(() {});
})
.catchError((e) {});
}
@override
Widget build(BuildContext context) {
return giftWallList.isEmpty
? mainEmpty(
msg: ATAppLocalizations.of(context)!.noData,
textColor: Colors.black54,
)
: SingleChildScrollView(
child: GridView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4, // 每行2个
childAspectRatio: 0.82, // 宽高比
mainAxisSpacing: 10,
crossAxisSpacing: 10,
),
padding: EdgeInsets.all(10.w),
itemCount: giftWallList.length,
itemBuilder: (context, index) {
return _buildItem(giftWallList[index]);
},
),
);
;
}
Widget _buildItem(ChatVibeGiftRes gift) {
return Column(
children: [
Container(
width: 68.w,
height: 68.w,
decoration: BoxDecoration(
color: Color(0xffD9D9D9),
borderRadius: BorderRadius.circular(10.w),
),
alignment: Alignment.center,
child: netImage(url: gift.giftPhoto ?? "", width: 36.w),
),
SizedBox(height: 9.w),
text(
"x ${gift.quantity}",
fontSize: 13.sp,
textColor: Colors.black38,
)
],
);
}
}