1
0
mirror of https://github.com/immich-app/immich.git synced 2025-08-10 23:22:22 +02:00

chore(mobile): search field in separate widget (#16977)

* chore(mobile): search field in separate widget

* fix: removed unnecessary use of context

* chore: minor styling tweak

* fix: controller not bound

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Yaros
2025-03-24 20:40:33 +01:00
committed by GitHub
parent 8bc80076bb
commit a651a4bf0e
4 changed files with 106 additions and 120 deletions

View File

@@ -8,13 +8,13 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/theme_extensions.dart';
import 'package:immich_mobile/interfaces/person_api.interface.dart';
import 'package:immich_mobile/models/search/search_filter.model.dart';
import 'package:immich_mobile/providers/search/paginated_search.provider.dart';
import 'package:immich_mobile/providers/search/search_input_focus.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/widgets/asset_grid/multiselect_grid.dart';
import 'package:immich_mobile/widgets/common/search_field.dart';
import 'package:immich_mobile/widgets/search/search_filter/camera_picker.dart';
import 'package:immich_mobile/widgets/search/search_filter/display_option_picker.dart';
import 'package:immich_mobile/widgets/search/search_filter/filter_bottom_sheet_scaffold.dart';
@@ -640,51 +640,21 @@ class SearchPage extends HookConsumerWidget {
end: Alignment.bottomRight,
),
),
child: TextField(
child: SearchField(
hintText: searchHintText.value,
key: const Key('search_text_field'),
controller: textSearchController,
decoration: InputDecoration(
contentPadding: prefilter != null
? const EdgeInsets.only(left: 24)
: const EdgeInsets.all(8),
prefixIcon: prefilter != null
? null
: Icon(
getSearchPrefixIcon(),
color: context.colorScheme.primary,
),
hintText: searchHintText.value,
hintStyle: context.textTheme.bodyLarge?.copyWith(
color: context.themeData.colorScheme.onSurfaceSecondary,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
borderSide: BorderSide(
color: context.colorScheme.surfaceDim,
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
borderSide: BorderSide(
color: context.colorScheme.surfaceContainer,
),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
borderSide: BorderSide(
color: context.colorScheme.surfaceDim,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
borderSide: BorderSide(
color: context.colorScheme.primary.withAlpha(100),
),
),
),
contentPadding: prefilter != null
? const EdgeInsets.only(left: 24)
: const EdgeInsets.all(8),
prefixIcon: prefilter != null
? null
: Icon(
getSearchPrefixIcon(),
color: context.colorScheme.primary,
),
onSubmitted: handleTextSubmitted,
focusNode: ref.watch(searchInputFocusProvider),
onTapOutside: (_) => ref.read(searchInputFocusProvider).unfocus(),
),
),
),