0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-02-04 01:09:14 -05:00
immich/mobile/lib/pages/common/large_leading_tile.dart

74 lines
2 KiB
Dart
Raw Permalink Normal View History

2024-10-10 15:44:14 +07:00
import 'package:flutter/material.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
2024-10-10 15:44:14 +07:00
class LargeLeadingTile extends StatelessWidget {
const LargeLeadingTile({
super.key,
required this.leading,
required this.onTap,
required this.title,
this.subtitle,
this.leadingPadding = const EdgeInsets.symmetric(
vertical: 8,
horizontal: 16.0,
),
this.borderRadius = 20.0,
this.trailing,
this.selected = false,
this.disabled = false,
this.selectedTileColor,
this.tileColor,
2024-10-10 15:44:14 +07:00
});
final Widget leading;
final VoidCallback onTap;
final Widget title;
final Widget? subtitle;
final EdgeInsetsGeometry leadingPadding;
final double borderRadius;
final Widget? trailing;
final bool selected;
final bool disabled;
final Color? selectedTileColor;
final Color? tileColor;
2024-10-10 15:44:14 +07:00
@override
Widget build(BuildContext context) {
return InkWell(
borderRadius: BorderRadius.circular(borderRadius),
onTap: disabled ? null : onTap,
child: Container(
decoration: BoxDecoration(
color: selected
? selectedTileColor ??
Theme.of(context).primaryColor.withAlpha(30)
: tileColor ?? Colors.transparent,
borderRadius: BorderRadius.circular(borderRadius),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: leadingPadding,
child: leading,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: context.width * 0.6,
child: title,
),
subtitle ?? const SizedBox.shrink(),
],
2024-10-10 15:44:14 +07:00
),
),
if (trailing != null) trailing!,
],
),
2024-10-10 15:44:14 +07:00
),
);
}
}