creek

The AI Image Editor of 2030

search_bar.dart (1737B)


import 'package:flutter/material.dart';
import 'package:creekui/ui/styles/variables.dart';

class CommonSearchBar extends StatelessWidget {
  final TextEditingController controller;
  final ValueChanged<String>? onChanged;
  final String hintText;
  final Color? backgroundColor;

  const CommonSearchBar({
    super.key,
    required this.controller,
    this.onChanged,
    this.hintText = 'Search',
    this.backgroundColor,
  });

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: controller,
      onChanged: onChanged,
      style: Variables.bodyStyle,
      decoration: InputDecoration(
        hintText: hintText,
        hintStyle: Variables.bodyStyle.copyWith(
          color: Variables.textSecondary.withOpacity(0.5),
        ),
        prefixIcon: Icon(
          Icons.search,
          size: 18,
          color: Variables.textSecondary.withOpacity(0.5),
        ),
        prefixIconConstraints: const BoxConstraints(
          minWidth: 50,
          minHeight: 18,
        ),
        filled: true,
        fillColor: backgroundColor ?? Variables.surfaceSubtle,
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(Variables.radiusSmall),
          borderSide: BorderSide.none,
        ),
        enabledBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(Variables.radiusSmall),
          borderSide: BorderSide.none,
        ),
        focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(Variables.radiusSmall),
          borderSide: BorderSide.none,
        ),
        contentPadding: const EdgeInsets.symmetric(
          horizontal: 16,
          vertical: 12,
        ),
      ),
    );
  }
}