immich/mobile/lib/pages/common/large_leading_tile.dart
shenlong e52b9d15b5
chore: bump dart sdk to 3.8 ()
* chore: bump dart sdk to 3.8

* chore: make build

* make pigeon

* chore: format files

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-28 14:04:03 -05:00

63 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
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,
});
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;
@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(),
],
),
),
if (trailing != null) trailing!,
],
),
),
);
}
}