Skip to content

Commit c8eedf7

Browse files
authored
Simplify QueryFilter.filterArguments for callers (#9069)
1 parent 611f0f1 commit c8eedf7

5 files changed

Lines changed: 22 additions & 23 deletions

File tree

packages/devtools_app/lib/src/screens/logging/logging_controller.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -739,10 +739,9 @@ class LoggingController extends DevToolsScreenController
739739

740740
final queryFilter = filter.queryFilter;
741741
if (!queryFilter.isEmpty) {
742-
final filteredOutByQueryFilterArgument = queryFilter
743-
.filterArguments
744-
.values
745-
.any((argument) => !argument.matchesValue(log));
742+
final filteredOutByQueryFilterArgument = queryFilter.filterArguments.any(
743+
(argument) => !argument.matchesValue(log),
744+
);
746745
if (filteredOutByQueryFilterArgument) return false;
747746

748747
if (filter.queryFilter.substringExpressions.isNotEmpty) {

packages/devtools_app/lib/src/screens/network/network_controller.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,7 @@ class NetworkController extends DevToolsScreenController
449449
..clear()
450450
..addAll(
451451
_currentNetworkRequests.value.where((NetworkRequest r) {
452-
final filteredOutByQueryFilterArgument = queryFilter
453-
.filterArguments
454-
.values
452+
final filteredOutByQueryFilterArgument = queryFilter.filterArguments
455453
.any((argument) => !argument.matchesValue(r));
456454
if (filteredOutByQueryFilterArgument) return false;
457455

packages/devtools_app/lib/src/screens/profiler/cpu_profiler_controller.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -679,9 +679,7 @@ class CpuProfilerController extends DisposableController
679679

680680
final queryFilter = filter.queryFilter;
681681
if (!queryFilter.isEmpty) {
682-
final filteredOutByQueryFilterArgument = queryFilter
683-
.filterArguments
684-
.values
682+
final filteredOutByQueryFilterArgument = queryFilter.filterArguments
685683
.any((argument) => !argument.matchesValue(stackFrame));
686684
if (filteredOutByQueryFilterArgument) return false;
687685

packages/devtools_app/lib/src/shared/ui/filter.dart

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:flutter/material.dart';
1313
import '../primitives/utils.dart';
1414
import 'common_widgets.dart';
1515

16+
/// A mapping from filter kinds to [QueryFilterArgument]s.
1617
typedef QueryFilterArgs<T> = Map<String, QueryFilterArgument<T>>;
1718
typedef SettingFilters<T> = List<SettingFilter<T, Object>>;
1819

@@ -39,7 +40,7 @@ mixin FilterControllerMixin<T> on DisposableController
3940
///
4041
/// This should be overriden as a getter by subclasses to support persisting
4142
/// the most recent filter to DevTools preferences.
42-
ValueNotifier<String>? filterTagNotifier;
43+
ValueNotifier<String>? get filterTagNotifier => null;
4344

4445
ValueListenable<Filter<T>> get activeFilter => _activeFilter;
4546

@@ -94,6 +95,7 @@ mixin FilterControllerMixin<T> on DisposableController
9495
/// query with arguments may look like 'foo category:bar type:baz'. In this
9596
/// example, 'category' and 'type' would need to be defined as query filter
9697
/// arguments.
98+
@visibleForOverriding
9799
QueryFilterArgs<T> createQueryFilterArgs() =>
98100
<String, QueryFilterArgument<T>>{};
99101

@@ -244,12 +246,11 @@ class _FilterDialogState<T> extends State<FilterDialog<T>>
244246
mainAxisSize: MainAxisSize.min,
245247
crossAxisAlignment: CrossAxisAlignment.start,
246248
children: [
247-
for (final filter in widget.controller.settingFilters) ...[
249+
for (final filter in widget.controller.settingFilters)
248250
if (filter is ToggleFilter<T>)
249251
_ToggleFilterElement(filter: filter)
250252
else
251253
_SettingFilterElement(filter: filter),
252-
],
253254
],
254255
),
255256
);
@@ -452,14 +453,14 @@ class SettingFilter<T, V> {
452453
Map<String, Object?> get valueAsJson => {id: setting.value};
453454
}
454455

455-
class QueryFilter {
456+
class QueryFilter<T> {
456457
const QueryFilter._({
457-
this.filterArguments = const <String, QueryFilterArgument>{},
458+
QueryFilterArgs<T> filterArguments = const {},
458459
this.substringExpressions = const <Pattern>[],
459460
this.isEmpty = false,
460-
});
461+
}) : _filterArguments = filterArguments;
461462

462-
factory QueryFilter.empty({required QueryFilterArgs args}) {
463+
factory QueryFilter.empty({required QueryFilterArgs<T> args}) {
463464
return QueryFilter._(
464465
filterArguments: args,
465466
substringExpressions: <Pattern>[],
@@ -469,7 +470,7 @@ class QueryFilter {
469470

470471
factory QueryFilter.parse(
471472
String query, {
472-
required QueryFilterArgs args,
473+
required QueryFilterArgs<T> args,
473474
required bool useRegExp,
474475
}) {
475476
if (query.isEmpty) {
@@ -529,7 +530,12 @@ class QueryFilter {
529530
);
530531
}
531532

532-
final QueryFilterArgs filterArguments;
533+
/// The mapping of filter kinds fo [QueryFilterArgument]s.
534+
final QueryFilterArgs<T> _filterArguments;
535+
536+
/// The collection of all [QueryFilterArgument]s.
537+
Iterable<QueryFilterArgument<T>> get filterArguments =>
538+
_filterArguments.values;
533539

534540
final List<Pattern> substringExpressions;
535541

@@ -540,7 +546,7 @@ class QueryFilter {
540546
? ''
541547
: [
542548
...substringExpressions.toStringList(),
543-
for (final arg in filterArguments.values) arg.display,
549+
for (final arg in filterArguments) arg.display,
544550
].join(' ').trim();
545551
}
546552

packages/devtools_app/test/shared/ui/filter_test.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,7 @@ class _TestController extends DisposableController
448448

449449
final queryFilter = filter.queryFilter;
450450
if (!queryFilter.isEmpty) {
451-
final filteredOutByQueryFilterArgument = queryFilter
452-
.filterArguments
453-
.values
451+
final filteredOutByQueryFilterArgument = queryFilter.filterArguments
454452
.any((argument) => !argument.matchesValue(element));
455453
if (filteredOutByQueryFilterArgument) return false;
456454

0 commit comments

Comments
 (0)