mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	* enable border radius, switch exp, const constructor * regenerate provider * more formatting --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/material.dart';
 | 
						|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | 
						|
import 'package:immich_mobile/extensions/theme_extensions.dart';
 | 
						|
 | 
						|
class SearchField extends StatelessWidget {
 | 
						|
  const SearchField({
 | 
						|
    super.key,
 | 
						|
    required this.hintText,
 | 
						|
    this.autofocus = false,
 | 
						|
    this.controller,
 | 
						|
    this.focusNode,
 | 
						|
    this.onChanged,
 | 
						|
    this.onSubmitted,
 | 
						|
    this.onTapOutside,
 | 
						|
    this.contentPadding = const EdgeInsets.only(left: 24),
 | 
						|
    this.prefixIcon,
 | 
						|
    this.suffixIcon,
 | 
						|
    this.filled = false,
 | 
						|
  });
 | 
						|
 | 
						|
  final FocusNode? focusNode;
 | 
						|
  final void Function(String)? onChanged;
 | 
						|
  final void Function(String)? onSubmitted;
 | 
						|
  final void Function(PointerDownEvent)? onTapOutside;
 | 
						|
  final TextEditingController? controller;
 | 
						|
  final String hintText;
 | 
						|
  final EdgeInsetsGeometry contentPadding;
 | 
						|
  final Widget? prefixIcon;
 | 
						|
  final Widget? suffixIcon;
 | 
						|
  final bool autofocus;
 | 
						|
  final bool filled;
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context) {
 | 
						|
    return TextField(
 | 
						|
      controller: controller,
 | 
						|
      autofocus: autofocus,
 | 
						|
      focusNode: focusNode,
 | 
						|
      onChanged: onChanged,
 | 
						|
      onTapOutside: onTapOutside ?? (_) => focusNode?.unfocus(),
 | 
						|
      onSubmitted: onSubmitted,
 | 
						|
      decoration: InputDecoration(
 | 
						|
        contentPadding: contentPadding,
 | 
						|
        filled: filled,
 | 
						|
        fillColor: context.primaryColor.withValues(alpha: 0.1),
 | 
						|
        hintStyle: context.textTheme.bodyLarge?.copyWith(
 | 
						|
          color: context.themeData.colorScheme.onSurfaceSecondary,
 | 
						|
        ),
 | 
						|
        border: OutlineInputBorder(
 | 
						|
          borderRadius: const BorderRadius.all(
 | 
						|
            Radius.circular(25),
 | 
						|
          ),
 | 
						|
          borderSide: BorderSide(
 | 
						|
            color: context.colorScheme.surfaceDim,
 | 
						|
          ),
 | 
						|
        ),
 | 
						|
        enabledBorder: OutlineInputBorder(
 | 
						|
          borderRadius: const BorderRadius.all(
 | 
						|
            Radius.circular(25),
 | 
						|
          ),
 | 
						|
          borderSide: BorderSide(
 | 
						|
            color: context.colorScheme.surfaceContainer,
 | 
						|
          ),
 | 
						|
        ),
 | 
						|
        disabledBorder: OutlineInputBorder(
 | 
						|
          borderRadius: const BorderRadius.all(
 | 
						|
            Radius.circular(25),
 | 
						|
          ),
 | 
						|
          borderSide: BorderSide(
 | 
						|
            color: context.colorScheme.surfaceDim,
 | 
						|
          ),
 | 
						|
        ),
 | 
						|
        focusedBorder: OutlineInputBorder(
 | 
						|
          borderRadius: const BorderRadius.all(
 | 
						|
            Radius.circular(25),
 | 
						|
          ),
 | 
						|
          borderSide: BorderSide(
 | 
						|
            color: context.colorScheme.primary.withAlpha(100),
 | 
						|
          ),
 | 
						|
        ),
 | 
						|
        prefixIcon: prefixIcon,
 | 
						|
        suffixIcon: suffixIcon,
 | 
						|
        hintText: hintText,
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |