diff --git a/lib/get_connect/connect.dart b/lib/get_connect/connect.dart index a39ff5a51..762b81a44 100644 --- a/lib/get_connect/connect.dart +++ b/lib/get_connect/connect.dart @@ -9,6 +9,7 @@ export 'http/src/certificates/certificates.dart'; export 'http/src/http.dart'; export 'http/src/multipart/form_data.dart'; export 'http/src/multipart/multipart_file.dart'; +export 'http/src/request/request.dart'; export 'http/src/response/response.dart'; export 'sockets/sockets.dart'; diff --git a/lib/get_navigation/src/routes/get_router_delegate.dart b/lib/get_navigation/src/routes/get_router_delegate.dart index 5f98d4f2c..8a1e2c599 100644 --- a/lib/get_navigation/src/routes/get_router_delegate.dart +++ b/lib/get_navigation/src/routes/get_router_delegate.dart @@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../get_instance/src/bindings_interface.dart'; +import '../../../get_utils/src/extensions/iterable_extensions.dart'; import '../../../get_utils/src/platform/platform.dart'; import '../../../route_manager.dart'; @@ -280,12 +281,11 @@ class GetDelegate extends RouterDelegate return SynchronousFuture(_canPopPage()); } - bool _canPop(mode) { + bool _canPop(PopMode mode) { switch (mode) { case PopMode.history: return _canPopHistory(); case PopMode.page: - default: return _canPopPage(); } } diff --git a/lib/get_navigation/src/routes/new_path_route.dart b/lib/get_navigation/src/routes/new_path_route.dart index 87dadcf27..da97f1866 100644 --- a/lib/get_navigation/src/routes/new_path_route.dart +++ b/lib/get_navigation/src/routes/new_path_route.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/widgets.dart'; +import '../../../get_utils/src/extensions/iterable_extensions.dart'; import 'get_route.dart'; class RouteMatcher { @@ -247,11 +248,3 @@ class RouteNode { 'RouteNode(name: $path, nodeSegments: $nodeSegments, fullPath: $fullPath )'; } -extension Foo on Iterable { - T? firstWhereOrNull(bool Function(T element) test) { - for (var element in this) { - if (test(element)) return element; - } - return null; - } -} diff --git a/lib/get_navigation/src/routes/parse_route.dart b/lib/get_navigation/src/routes/parse_route.dart index aa3a1e375..434482547 100644 --- a/lib/get_navigation/src/routes/parse_route.dart +++ b/lib/get_navigation/src/routes/parse_route.dart @@ -283,13 +283,3 @@ class ParseRouteTree { return params; } } - -extension FirstWhereOrNullExt on List { - /// The first element satisfying [test], or `null` if there are none. - T? firstWhereOrNull(bool Function(T element) test) { - for (var element in this) { - if (test(element)) return element; - } - return null; - } -} diff --git a/lib/get_utils/src/extensions/export.dart b/lib/get_utils/src/extensions/export.dart index 3d94c059b..ec1bd42be 100644 --- a/lib/get_utils/src/extensions/export.dart +++ b/lib/get_utils/src/extensions/export.dart @@ -4,7 +4,7 @@ export 'duration_extensions.dart'; export 'dynamic_extensions.dart'; export 'event_loop_extensions.dart'; export 'int_extensions.dart'; -export 'internacionalization.dart' hide FirstWhereExt; +export 'internacionalization.dart'; export 'iterable_extensions.dart'; export 'num_extensions.dart'; export 'string_extensions.dart'; diff --git a/lib/get_utils/src/extensions/internacionalization.dart b/lib/get_utils/src/extensions/internacionalization.dart index e0155dd7c..dc300fb36 100644 --- a/lib/get_utils/src/extensions/internacionalization.dart +++ b/lib/get_utils/src/extensions/internacionalization.dart @@ -10,16 +10,6 @@ class _IntlHost { Map> translations = {}; } -extension FirstWhereExt on List { - /// The first element satisfying [test], or `null` if there are none. - T? firstWhereOrNull(bool Function(T element) test) { - for (var element in this) { - if (test(element)) return element; - } - return null; - } -} - extension LocalesIntl on GetInterface { static final _intlHost = _IntlHost(); diff --git a/lib/get_utils/src/extensions/iterable_extensions.dart b/lib/get_utils/src/extensions/iterable_extensions.dart index a9d9da8d9..f877736d3 100644 --- a/lib/get_utils/src/extensions/iterable_extensions.dart +++ b/lib/get_utils/src/extensions/iterable_extensions.dart @@ -1,9 +1,18 @@ extension IterableExtensions on Iterable { Iterable mapMany( - Iterable? Function(T item) selector) sync* { + Iterable? Function(T item) selector, + ) sync* { for (var item in this) { final res = selector(item); if (res != null) yield* res; } } + + /// The first element satisfying [test], or `null` if there are none. + T? firstWhereOrNull(bool Function(T element) test) { + for (var element in this) { + if (test(element)) return element; + } + return null; + } } diff --git a/test/utils/extensions/iterable_extensions_test.dart b/test/utils/extensions/iterable_extensions_test.dart new file mode 100644 index 000000000..9b94fe391 --- /dev/null +++ b/test/utils/extensions/iterable_extensions_test.dart @@ -0,0 +1,11 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:get/get.dart'; + +void main() { + group('IterableExt', () { + test('firstWhereOrNull', () { + expect([1, 2, 3].firstWhereOrNull((e) => e == 1), equals(1)); + expect([1, 2, 3].firstWhereOrNull((e) => e == 4), equals(null)); + }); + }); +}