From fa076305df9aeaaf845faf8fc7d91c29c9dfa4fb Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 21 Oct 2024 15:44:53 +0530 Subject: [PATCH] [mob][photos] Add animation to changes in recommended filter in appbar --- .../recommended_filters.dart | 62 ++++++++++--------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart b/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart index e5ad748663..841ffbfd58 100644 --- a/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart +++ b/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart @@ -54,34 +54,40 @@ class _RecommendedFiltersState extends State { padding: const EdgeInsets.only(bottom: 8), child: SizedBox( height: kFilterChipHeight, - child: ListView.builder( - itemBuilder: (context, index) { - final filter = _recommendations[index]; - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 4), - child: filter is FaceFilter - ? FaceFilterChip( - personId: filter.personId, - clusterId: filter.clusterId, - faceThumbnailFile: filter.faceFile, - name: filter.name(), - onTap: () { - _searchFilterDataProvider.applyFilters([filter]); - }, - ) - : GenericFilterChip( - label: filter.name(), - onTap: () { - _searchFilterDataProvider.applyFilters([filter]); - }, - leadingIcon: filter.icon(), - ), - ); - }, - clipBehavior: Clip.none, - scrollDirection: Axis.horizontal, - itemCount: _recommendations.length, - padding: const EdgeInsets.symmetric(horizontal: 4), + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + switchInCurve: Curves.easeInOutExpo, + switchOutCurve: Curves.easeInOutExpo, + child: ListView.builder( + key: ValueKey(_recommendations.length), + itemBuilder: (context, index) { + final filter = _recommendations[index]; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: filter is FaceFilter + ? FaceFilterChip( + personId: filter.personId, + clusterId: filter.clusterId, + faceThumbnailFile: filter.faceFile, + name: filter.name(), + onTap: () { + _searchFilterDataProvider.applyFilters([filter]); + }, + ) + : GenericFilterChip( + label: filter.name(), + onTap: () { + _searchFilterDataProvider.applyFilters([filter]); + }, + leadingIcon: filter.icon(), + ), + ); + }, + clipBehavior: Clip.none, + scrollDirection: Axis.horizontal, + itemCount: _recommendations.length, + padding: const EdgeInsets.symmetric(horizontal: 4), + ), ), ), );