From 3a2e0349e284e19934e4b45d4232ae35448806fc Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 3 Jul 2021 22:53:08 +0900 Subject: [PATCH] #50 settings: scrollable hidden filter list --- .../settings/privacy/hidden_filters.dart | 99 +++++++++++-------- 1 file changed, 59 insertions(+), 40 deletions(-) diff --git a/lib/widgets/settings/privacy/hidden_filters.dart b/lib/widgets/settings/privacy/hidden_filters.dart index 4d4590506..e5eff75da 100644 --- a/lib/widgets/settings/privacy/hidden_filters.dart +++ b/lib/widgets/settings/privacy/hidden_filters.dart @@ -40,52 +40,71 @@ class HiddenFilterPage extends StatelessWidget { title: Text(context.l10n.settingsHiddenFiltersTitle), ), body: SafeArea( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), - child: Row( + child: Selector>( + selector: (context, s) => settings.hiddenFilters, + builder: (context, hiddenFilters, child) { + if (hiddenFilters.isEmpty) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Icon(AIcons.info), - const SizedBox(width: 16), - Expanded(child: Text(context.l10n.settingsHiddenFiltersBanner)), - ], - ), - ), - const Divider(), - Expanded( - child: Padding( - padding: const EdgeInsets.all(8), - child: Selector>( - selector: (context, s) => settings.hiddenFilters, - builder: (context, hiddenFilters, child) { - if (hiddenFilters.isEmpty) { - return EmptyContent( + const _Header(), + const Divider(), + Expanded( + child: Padding( + padding: const EdgeInsets.all(8), + child: EmptyContent( icon: AIcons.hide, text: context.l10n.settingsHiddenFiltersEmpty, - ); - } - final filterList = hiddenFilters.toList()..sort(); - return Wrap( - spacing: 8, - runSpacing: 8, - children: filterList - .map((filter) => AvesFilterChip( - filter: filter, - removable: true, - onTap: (filter) => context.read().changeFilterVisibility(filter, true), - onLongPress: null, - )) - .toList(), - ); - }, + ), + ), + ), + ], + ); + } + + final filterList = hiddenFilters.toList()..sort(); + return ListView( + children: [ + const _Header(), + const Divider(), + Padding( + padding: const EdgeInsets.all(8), + child: Wrap( + spacing: 8, + runSpacing: 8, + children: filterList + .map((filter) => AvesFilterChip( + filter: filter, + removable: true, + onTap: (filter) => context.read().changeFilterVisibility(filter, true), + onLongPress: null, + )) + .toList(), + ), ), - ), - ), - ], + ], + ); + }, ), ), ); } } + +class _Header extends StatelessWidget { + const _Header({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), + child: Row( + children: [ + const Icon(AIcons.info), + const SizedBox(width: 16), + Expanded(child: Text(context.l10n.settingsHiddenFiltersBanner)), + ], + ), + ); + } +}