mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			64 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!,
 | 
						|
          ],
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |