cardWidget method
CardWidgetBundle
cardWidget({
- required BuildContext context,
- required CustomCardType title,
- List<
APIPlayerPop> ? cachedCardList, - dynamic onCardUpdated(
- List<
APIPlayerPop> updatedCard
- List<
- required bool firstFetch,
- required dynamic profileFunction({}),
Implementation
CardWidgetBundle cardWidget({
required BuildContext context,
required CustomCardType title,
List<APIPlayerPop>? cachedCardList,
Function(List<APIPlayerPop> updatedCard)? onCardUpdated,
required bool firstFetch,
required Function({
required int userID,
required String username,
required String? displayname,
required Media? avatar,
required Media? banner,
}) profileFunction,
}) {
final controller = Get.put(
CardsControllerV2(
service: service,
cachedCardList: cachedCardList,
onCardUpdated: onCardUpdated,
firstFetch: firstFetch,
title: title,
),
tag: DateTime.now().microsecondsSinceEpoch.toString() + title.name,
);
Widget widget = Obx(
() => controller.cardList.value == null
? SkeletonCustomCards(count: 5, icon: controller.xicon.value!)
: SizedBox(
height: 220,
child: ListView.separated(
controller: controller.xscrollController.value,
shrinkWrap: true,
padding: const EdgeInsets.fromLTRB(10, 10, 10, 10),
scrollDirection: Axis.horizontal,
itemCount: controller.morefetchProcces.value
? controller.cardList.value!.length + 1
: controller.cardList.value!.length,
physics: const BouncingScrollPhysics(),
itemBuilder: (context, index) {
if (controller.cardList.value!.length == index) {
return const SizedBox(
width: 150,
child: CupertinoActivityIndicator(),
);
}
APIPlayerPop cardData = controller.cardList.value![index];
return InkWell(
borderRadius: BorderRadius.circular(15),
onTap: () {
profileFunction(
userID: cardData.oyuncuID,
username: cardData.oyuncuKullaniciAdi,
displayname: cardData.oyuncuAdSoyad,
avatar: Media(
mediaID: 0,
mediaType: MediaType.image,
mediaURL: MediaURL(
bigURL: Rx(cardData.oyuncuAvatar),
normalURL: Rx(cardData.oyuncuAvatar),
minURL: Rx(cardData.oyuncuAvatar),
),
),
banner: Media(
mediaID: 0,
mediaType: MediaType.image,
mediaURL: MediaURL(
bigURL: Rx(cardData.oyuncuAvatar),
normalURL: Rx(cardData.oyuncuAvatar),
minURL: Rx(cardData.oyuncuAvatar),
),
),
);
},
child: Container(
width: 150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
image: DecorationImage(
fit: BoxFit.cover,
filterQuality: FilterQuality.high,
image: CachedNetworkImageProvider(
cardData.oyuncuAvatar,
),
),
),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
gradient: LinearGradient(
colors: [
controller.xeffectcolor.value!,
Colors.transparent,
Colors.black,
],
stops: const [0.1, 0.8, 1],
begin: Alignment.bottomCenter,
end: Alignment.topCenter,
),
),
child: Column(
// alignment: Alignment.bottomCenter,
children: [
const SizedBox(
height: 0,
),
Align(
alignment: Alignment.centerLeft,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
(index + 1).toString(),
style: const TextStyle(
fontSize: 22,
fontWeight: FontWeight.w500,
color: Colors.white,
),
),
),
),
const Expanded(
child: SizedBox(),
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.fromLTRB(7, 0, 7, 7),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
cardData.oyuncuAdSoyad,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Colors.white,
),
),
Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
controller.xicon.value!,
const SizedBox(width: 5),
Text(
title == CustomCardType.playerXP
? cardData.oyuncuSeviyeSezonlukXP
.toString()
: cardData.oyuncuPop.toString(),
style: const TextStyle(
color: Colors.white,
),
),
],
),
],
),
),
),
],
),
),
),
);
},
separatorBuilder: (context, index) => const SizedBox(width: 20),
),
),
);
return CardWidgetBundle(
widget: Rxn(widget),
refresh: () async => await controller.refreshAllCards(),
loadMore: () async => await controller.loadMoreCards(),
);
}