// Author: fruit.com.cn import 'package:flutter/material.dart'; import '../../../core/theme/app_colors.dart'; import '../../../core/theme/app_dimens.dart'; import '../../../l10n/app_localizations.dart'; /// 剧场顶部搜索框。 class DiscoverSearchField extends StatelessWidget { const DiscoverSearchField({ super.key, required this.controller, required this.focusNode, required this.onChanged, required this.loading, this.horizontalPadding = 14, }); final TextEditingController controller; final FocusNode focusNode; final ValueChanged onChanged; final bool loading; final double horizontalPadding; @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.symmetric(horizontal: horizontalPadding), child: SizedBox( height: AppDimens.searchHeight, child: TextField( key: const Key('discover-search'), controller: controller, focusNode: focusNode, onChanged: onChanged, onTapOutside: (_) => focusNode.unfocus(), textInputAction: TextInputAction.search, style: const TextStyle(color: AppColors.onSurface, fontSize: 14), decoration: InputDecoration( isDense: true, filled: true, fillColor: AppColors.input, hintText: AppLocalizations.of(context)!.searchDiscover, hintStyle: const TextStyle(color: AppColors.subtle, fontSize: 12), prefixIcon: const Icon( Icons.search_rounded, color: AppColors.subtle, size: 17, ), suffixIcon: loading ? const Padding( padding: EdgeInsets.all(11), child: CircularProgressIndicator(strokeWidth: 2), ) : null, contentPadding: const EdgeInsets.symmetric(horizontal: 12), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppDimens.pillRadius), borderSide: BorderSide.none, ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppDimens.pillRadius), borderSide: const BorderSide(color: AppColors.blue, width: 1), ), ), ), ), ); } }