// Author: fruit.com.cn import 'package:flutter/material.dart'; import '../../../core/theme/app_colors.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, }); final TextEditingController controller; final FocusNode focusNode; final ValueChanged onChanged; final bool loading; @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 14), child: SizedBox( height: 36, 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: 13), decoration: InputDecoration( isDense: true, filled: true, fillColor: AppColors.input, hintText: AppLocalizations.of(context)!.searchDiscover, hintStyle: const TextStyle(color: AppColors.cream, fontSize: 11), 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(20), borderSide: BorderSide.none, ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(20), borderSide: const BorderSide(color: AppColors.blue, width: 1), ), ), ), ), ); } }