2025-01-31 10:24:37 +01:00

64 lines
1.9 KiB
Dart

import 'package:refilc/models/ad.dart';
import 'package:refilc/theme/colors/colors.dart';
import 'package:flutter/material.dart';
import 'package:refilc_mobile_ui/common/panel/panel_button.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
class AdTile extends StatelessWidget {
const AdTile(this.ad,
{super.key, this.onTap, this.padding, this.showExternalIcon = true});
final Ad ad;
final Function()? onTap;
final EdgeInsetsGeometry? padding;
final bool showExternalIcon;
@override
Widget build(BuildContext context) {
return Padding(
padding: padding ?? const EdgeInsets.symmetric(horizontal: 8.0),
child: PanelButton(
padding: const EdgeInsets.only(left: 8.0, right: 16.0),
onPressed: onTap,
title: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
ad.title,
),
Text(
ad.description,
style: TextStyle(
fontSize: 14.5,
fontWeight: FontWeight.w500,
color: AppColors.of(context).text.withValues(alpha: 0.7),
),
),
],
),
leading: ad.logoUrl != null
? ClipRRect(
borderRadius: BorderRadius.circular(50.0),
child: Image.network(
width: 42.0,
height: 42.0,
ad.logoUrl.toString(),
errorBuilder: (context, error, stackTrace) {
ad.logoUrl = null;
return const SizedBox();
},
),
)
: null,
trailing: showExternalIcon
? const Icon(
FeatherIcons.externalLink,
size: 20.0,
)
: null,
),
);
}
}