forked from firka/student-legacy
64 lines
1.9 KiB
Dart
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,
|
|
),
|
|
);
|
|
}
|
|
}
|