feat(infinite-query): add refetchPages, refetchOnStale, refetchOnMount support
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# This is a generated file; do not edit or check into version control.
|
# This is a generated file; do not edit or check into version control.
|
||||||
connectivity_plus=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/
|
connectivity_plus=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/
|
||||||
connectivity_plus_linux=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
connectivity_plus_linux=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
||||||
connectivity_plus_macos=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/
|
connectivity_plus_macos=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/
|
||||||
connectivity_plus_web=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.2/
|
connectivity_plus_web=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/
|
||||||
connectivity_plus_windows=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/
|
connectivity_plus_windows=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.2/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-08-24 21:03:29.720419","version":"3.0.5"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-14 11:35:43.874010","version":"3.3.0"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-08-24 21:03:52.762936","version":"3.0.5"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-14 11:35:53.826188","version":"3.3.0"}
|
||||||
@@ -1,2 +1,5 @@
|
|||||||
sdk.dir=/opt/android-sdk
|
sdk.dir=/home/krtirtho/Android/Sdk
|
||||||
flutter.sdk=/home/krtirtho/fvm/versions/3.0.5
|
flutter.sdk=/opt/flutter
|
||||||
|
flutter.buildMode=debug
|
||||||
|
flutter.versionName=1.0.0
|
||||||
|
flutter.versionCode=1
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:fl_query/fl_query.dart';
|
import 'package:fl_query/fl_query.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
@@ -49,9 +48,18 @@ class BasicInfiniteQueryExample extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomRight,
|
alignment: Alignment.bottomRight,
|
||||||
child: IconButton(
|
child: Row(
|
||||||
icon: const Icon(Icons.get_app_rounded),
|
mainAxisSize: MainAxisSize.min,
|
||||||
onPressed: () => infiniteQuery.fetchNextPage(),
|
children: [
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.refresh_rounded),
|
||||||
|
onPressed: () => infiniteQuery.refetchPages(),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.get_app_rounded),
|
||||||
|
onPressed: () => infiniteQuery.fetchNextPage(),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
# Generated code do not commit.
|
# Generated code do not commit.
|
||||||
file(TO_CMAKE_PATH "/home/krtirtho/fvm/versions/3.0.5" FLUTTER_ROOT)
|
file(TO_CMAKE_PATH "/opt/flutter" FLUTTER_ROOT)
|
||||||
file(TO_CMAKE_PATH "/home/krtirtho/dev/fl-query/packages/fl_query/example" PROJECT_DIR)
|
file(TO_CMAKE_PATH "/home/krtirtho/dev/fl-query/packages/fl_query/example" PROJECT_DIR)
|
||||||
|
|
||||||
|
set(FLUTTER_VERSION "1.0.0+1" PARENT_SCOPE)
|
||||||
|
set(FLUTTER_VERSION_MAJOR 1 PARENT_SCOPE)
|
||||||
|
set(FLUTTER_VERSION_MINOR 0 PARENT_SCOPE)
|
||||||
|
set(FLUTTER_VERSION_PATCH 0 PARENT_SCOPE)
|
||||||
|
set(FLUTTER_VERSION_BUILD 1 PARENT_SCOPE)
|
||||||
|
|
||||||
# Environment variables to pass to tool_backend.sh
|
# Environment variables to pass to tool_backend.sh
|
||||||
list(APPEND FLUTTER_TOOL_ENVIRONMENT
|
list(APPEND FLUTTER_TOOL_ENVIRONMENT
|
||||||
"FLUTTER_ROOT=/home/krtirtho/fvm/versions/3.0.5"
|
"FLUTTER_ROOT=/opt/flutter"
|
||||||
"PROJECT_DIR=/home/krtirtho/dev/fl-query/packages/fl_query/example"
|
"PROJECT_DIR=/home/krtirtho/dev/fl-query/packages/fl_query/example"
|
||||||
"DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ=="
|
"DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ=="
|
||||||
"DART_OBFUSCATION=false"
|
"DART_OBFUSCATION=false"
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -14,7 +14,7 @@ packages:
|
|||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.2"
|
version: "2.9.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -28,21 +28,14 @@ packages:
|
|||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
charcode:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: charcode
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.1"
|
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -119,7 +112,7 @@ packages:
|
|||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -197,21 +190,21 @@ packages:
|
|||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.11"
|
version: "0.12.12"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.4"
|
version: "0.1.5"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.0"
|
version: "1.8.0"
|
||||||
nm:
|
nm:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -225,7 +218,7 @@ packages:
|
|||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.1"
|
version: "1.8.2"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -240,6 +233,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.2"
|
||||||
|
queue:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: queue
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0+1"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -258,7 +258,7 @@ packages:
|
|||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.2"
|
version: "1.9.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -279,21 +279,21 @@ packages:
|
|||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.9"
|
version: "0.4.12"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ abstract class BaseQuery<T extends Object, Outside, Error>
|
|||||||
if (onError != null) _onErrorListeners.add(onError);
|
if (onError != null) _onErrorListeners.add(onError);
|
||||||
|
|
||||||
if (refetchInterval != null && refetchInterval != Duration.zero) {
|
if (refetchInterval != null && refetchInterval != Duration.zero) {
|
||||||
_refetchIntervalTimer = _createRefetchTimer();
|
_refetchIntervalTimer = createRefetchTimer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// all getters & setters
|
// all getters & setters
|
||||||
@@ -79,16 +79,8 @@ abstract class BaseQuery<T extends Object, Outside, Error>
|
|||||||
Outside get externalData => _externalData;
|
Outside get externalData => _externalData;
|
||||||
Outside? get prevUsedExternalData => _prevUsedExternalData;
|
Outside? get prevUsedExternalData => _prevUsedExternalData;
|
||||||
|
|
||||||
Timer _createRefetchTimer() {
|
@protected
|
||||||
return Timer.periodic(
|
Timer createRefetchTimer();
|
||||||
refetchInterval!,
|
|
||||||
(_) async {
|
|
||||||
// only refetch if its connected to the internet or refetch will
|
|
||||||
// always result in error while there's no internet
|
|
||||||
if (isStale && await isInternetConnected()) await refetch();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Calls the task function & doesn't check if there's already
|
/// Calls the task function & doesn't check if there's already
|
||||||
/// cached data available
|
/// cached data available
|
||||||
@@ -205,7 +197,9 @@ abstract class BaseQuery<T extends Object, Outside, Error>
|
|||||||
return await execute().then((_) => data);
|
return await execute().then((_) => data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@protected
|
||||||
FutureOr<void> setData();
|
FutureOr<void> setData();
|
||||||
|
@protected
|
||||||
void setError(dynamic);
|
void setError(dynamic);
|
||||||
|
|
||||||
/// Sets the [externalData] from outside of the query
|
/// Sets the [externalData] from outside of the query
|
||||||
@@ -251,7 +245,7 @@ abstract class BaseQuery<T extends Object, Outside, Error>
|
|||||||
refetchInterval != Duration.zero) {
|
refetchInterval != Duration.zero) {
|
||||||
this.refetchInterval = refetchInterval;
|
this.refetchInterval = refetchInterval;
|
||||||
_refetchIntervalTimer?.cancel();
|
_refetchIntervalTimer?.cancel();
|
||||||
_refetchIntervalTimer = _createRefetchTimer();
|
_refetchIntervalTimer = createRefetchTimer();
|
||||||
}
|
}
|
||||||
if (this.cacheTime == Duration(minutes: 5) && cacheTime != null)
|
if (this.cacheTime == Duration(minutes: 5) && cacheTime != null)
|
||||||
this.cacheTime = cacheTime;
|
this.cacheTime = cacheTime;
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import 'package:connectivity_plus/connectivity_plus.dart';
|
|||||||
import 'package:fl_query/src/base_query.dart';
|
import 'package:fl_query/src/base_query.dart';
|
||||||
import 'package:fl_query/src/models/infinite_query_job.dart';
|
import 'package:fl_query/src/models/infinite_query_job.dart';
|
||||||
import 'package:fl_query/src/query.dart';
|
import 'package:fl_query/src/query.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:queue/queue.dart';
|
||||||
|
|
||||||
typedef InfiniteQueryTaskFunction<T extends Object, Outside,
|
typedef InfiniteQueryTaskFunction<T extends Object, Outside,
|
||||||
PageParam extends Object>
|
PageParam extends Object>
|
||||||
@@ -91,6 +93,19 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
|
|||||||
List<dynamic> get errors => error?.values.toList() ?? [];
|
List<dynamic> get errors => error?.values.toList() ?? [];
|
||||||
List<T?> get pages => data?.values.toList() ?? [];
|
List<T?> get pages => data?.values.toList() ?? [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
@protected
|
||||||
|
Timer createRefetchTimer() {
|
||||||
|
return Timer.periodic(
|
||||||
|
refetchInterval!,
|
||||||
|
(_) async {
|
||||||
|
// only refetch if its connected to the internet or refetch will
|
||||||
|
// always result in error while there's no internet
|
||||||
|
if (isStale && await isInternetConnected()) await refetchPages();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Future<T?> fetchNextPage([
|
Future<T?> fetchNextPage([
|
||||||
InfiniteQueryPageParamFunction<T, PageParam>? getNextPageParam,
|
InfiniteQueryPageParamFunction<T, PageParam>? getNextPageParam,
|
||||||
]) async {
|
]) async {
|
||||||
@@ -110,10 +125,11 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
|
|||||||
_hasNextPage = false;
|
_hasNextPage = false;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
return null;
|
return null;
|
||||||
|
} else {
|
||||||
|
_hasNextPage = true;
|
||||||
|
_currentParam = nextParam;
|
||||||
|
return await refetch().then((data) => data?[_currentParam]);
|
||||||
}
|
}
|
||||||
_hasNextPage = true;
|
|
||||||
_currentParam = nextParam;
|
|
||||||
return await refetch().then((data) => data?[_currentParam]);
|
|
||||||
} finally {
|
} finally {
|
||||||
_isFetchingNextPage = false;
|
_isFetchingNextPage = false;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
@@ -154,11 +170,53 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<T>> refetchPages([
|
||||||
|
bool Function(T? page, int index, List<T?> allPages)? selector,
|
||||||
|
]) async {
|
||||||
|
if (isFetchingNextPage ||
|
||||||
|
isFetchingPreviousPage ||
|
||||||
|
isLoading ||
|
||||||
|
isRefetching) return [];
|
||||||
|
final refetchedPages = <T>[];
|
||||||
|
final queue = Queue();
|
||||||
|
for (final entry in data?.entries.toList() ?? <MapEntry<PageParam, T?>>[]) {
|
||||||
|
final page = entry.value;
|
||||||
|
final selected = selector?.call(page, pages.indexOf(page), pages) ?? true;
|
||||||
|
if (!selected) continue;
|
||||||
|
_currentParam = entry.key;
|
||||||
|
queue.add<void>(
|
||||||
|
() async {
|
||||||
|
final s = await refetch();
|
||||||
|
if (s?[_currentParam] != null) {
|
||||||
|
refetchedPages.add(s![_currentParam]!);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
await queue.onComplete;
|
||||||
|
return refetchedPages;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
// TODO: implement debugLabel
|
// TODO: implement debugLabel
|
||||||
String get debugLabel => "InfiniteQuery($queryKey)";
|
String get debugLabel => "InfiniteQuery($queryKey)";
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
void mount(ValueKey<String> uKey) {
|
||||||
|
super.mount(uKey);
|
||||||
|
|
||||||
|
/// refetching on mount if it's set to true
|
||||||
|
/// also checking if the is stale or not
|
||||||
|
/// no need to refetch a valid query for no reason
|
||||||
|
if (refetchOnMount == true && isStale) {
|
||||||
|
this.isInternetConnected().then((isConnected) async {
|
||||||
|
if (isConnected) await refetchPages();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@protected
|
||||||
void setData() async {
|
void setData() async {
|
||||||
if (data == null) data = Map();
|
if (data == null) data = Map();
|
||||||
data?[_currentParam] = await task(
|
data?[_currentParam] = await task(
|
||||||
@@ -169,6 +227,7 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@protected
|
||||||
void setError(specError) {
|
void setError(specError) {
|
||||||
if (error is! Map) error = Map();
|
if (error is! Map) error = Map();
|
||||||
error?[_currentParam] = specError;
|
error?[_currentParam] = specError;
|
||||||
|
|||||||
@@ -48,14 +48,77 @@ class _InfiniteQueryBuilderState<T extends Object, Outside,
|
|||||||
final hasExternalDataChanged = infiniteQuery!.externalData != null &&
|
final hasExternalDataChanged = infiniteQuery!.externalData != null &&
|
||||||
infiniteQuery!.prevUsedExternalData != null &&
|
infiniteQuery!.prevUsedExternalData != null &&
|
||||||
!isShallowEqual(
|
!isShallowEqual(
|
||||||
infiniteQuery!.externalData!, infiniteQuery!.prevUsedExternalData!);
|
infiniteQuery!.externalData!,
|
||||||
|
infiniteQuery!.prevUsedExternalData!,
|
||||||
|
);
|
||||||
|
|
||||||
if (infiniteQuery!.fetched && hasExternalDataChanged) {
|
if (infiniteQuery!.fetched && hasExternalDataChanged) {
|
||||||
await infiniteQuery!.refetch();
|
await infiniteQuery!.refetchPages();
|
||||||
} else if (!infiniteQuery!.fetched) {
|
} else if (!infiniteQuery!.fetched) {
|
||||||
await infiniteQuery!.fetch();
|
await infiniteQuery!.fetch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(covariant oldWidget) {
|
||||||
|
// final hasOnErrorChanged = false;
|
||||||
|
// oldWidget.onError != widget.onError && oldWidget.onError != null;
|
||||||
|
// final hasOnDataChanged = false;
|
||||||
|
// oldWidget.onData != widget.onData && oldWidget.onData != null;
|
||||||
|
|
||||||
|
// re-init the query-builder when new queryJob is appended
|
||||||
|
if (oldWidget.job.queryKey != widget.job.queryKey) {
|
||||||
|
_infiniteQueryDispose();
|
||||||
|
init();
|
||||||
|
|
||||||
|
/// setting the new query's initial data as prev query's data
|
||||||
|
/// when [job.keepPreviousData] is true and both are dynamic
|
||||||
|
// if (oldWidget.job.isDynamic &&
|
||||||
|
// widget.job.isDynamic &&
|
||||||
|
// oldWidget.job.keepPreviousData == true &&
|
||||||
|
// widget.job.keepPreviousData == true) {
|
||||||
|
// init(infiniteQuery?.pages);
|
||||||
|
// } else {
|
||||||
|
// init();
|
||||||
|
// }
|
||||||
|
} else if (oldWidget.externalData != null &&
|
||||||
|
widget.externalData != null &&
|
||||||
|
!isShallowEqual(oldWidget.externalData!, widget.externalData!)) {
|
||||||
|
if (widget.job.refetchOnExternalDataChange ??
|
||||||
|
queryBowl.refetchOnExternalDataChange) {
|
||||||
|
QueryBowl.of(context).addInfiniteQuery(
|
||||||
|
widget.job,
|
||||||
|
externalData: widget.externalData,
|
||||||
|
key: uKey,
|
||||||
|
// onData: widget.onData,
|
||||||
|
// onError: widget.onError,
|
||||||
|
)..refetchPages();
|
||||||
|
} else {
|
||||||
|
QueryBowl.of(context)
|
||||||
|
.getQuery(widget.job.queryKey)
|
||||||
|
?.setExternalData(widget.externalData);
|
||||||
|
}
|
||||||
|
// if (hasOnDataChanged) query?.removeDataListener(oldWidget.onData!);
|
||||||
|
// if (hasOnErrorChanged) query?.removeErrorListener(oldWidget.onError!);
|
||||||
|
} else {
|
||||||
|
// if (hasOnDataChanged) {
|
||||||
|
// query?.removeDataListener(oldWidget.onData!);
|
||||||
|
// if (widget.onData != null) query?.addDataListener(widget.onData!);
|
||||||
|
// }
|
||||||
|
// if (hasOnErrorChanged) {
|
||||||
|
// query?.removeErrorListener(oldWidget.onError!);
|
||||||
|
// if (widget.onError != null) query?.addErrorListener(widget.onError!);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
_infiniteQueryDispose() {
|
||||||
|
infiniteQuery?.unmount(uKey);
|
||||||
|
// if (widget.onData != null) query?.removeDataListener(widget.onData!);
|
||||||
|
// if (widget.onError != null) query?.removeErrorListener(widget.onError!);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
queryBowl = QueryBowl.of(context);
|
queryBowl = QueryBowl.of(context);
|
||||||
|
|||||||
@@ -85,6 +85,18 @@ class Query<T extends Object, Outside> extends BaseQuery<T, Outside, dynamic> {
|
|||||||
queryKey: options.queryKey,
|
queryKey: options.queryKey,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Timer createRefetchTimer() {
|
||||||
|
return Timer.periodic(
|
||||||
|
refetchInterval!,
|
||||||
|
(_) async {
|
||||||
|
// only refetch if its connected to the internet or refetch will
|
||||||
|
// always result in error while there's no internet
|
||||||
|
if (isStale && await isInternetConnected()) await refetch();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// can be used to update the data manually. Can be useful when used
|
/// can be used to update the data manually. Can be useful when used
|
||||||
/// together with mutations to perform optimistic updates or manual data
|
/// together with mutations to perform optimistic updates or manual data
|
||||||
/// updates
|
/// updates
|
||||||
|
|||||||
@@ -114,6 +114,12 @@ class _QueryBowlScopeState extends State<QueryBowlScope> {
|
|||||||
await query.refetch();
|
await query.refetch();
|
||||||
await Future.delayed(widget.refetchOnReconnectDelay);
|
await Future.delayed(widget.refetchOnReconnectDelay);
|
||||||
}
|
}
|
||||||
|
for (final infiniteQuery in infiniteQueries) {
|
||||||
|
if (infiniteQuery.refetchOnReconnect == false ||
|
||||||
|
!infiniteQuery.enabled) continue;
|
||||||
|
await infiniteQuery.refetchPages();
|
||||||
|
await Future.delayed(widget.refetchOnReconnectDelay);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -169,10 +175,10 @@ class _QueryBowlScopeState extends State<QueryBowlScope> {
|
|||||||
// basically garbage collecting queries
|
// basically garbage collecting queries
|
||||||
setState(() {
|
setState(() {
|
||||||
infiniteQueries = Set.from(
|
infiniteQueries = Set.from(
|
||||||
// infiniteQuery.isInactive
|
infiniteQuery.isInactive
|
||||||
// ? infiniteQueries.where((el) => el.queryKey != infiniteQuery.queryKey)
|
? infiniteQueries
|
||||||
// : infiniteQuery,
|
.where((el) => el.queryKey != infiniteQuery.queryKey)
|
||||||
infiniteQueries,
|
: infiniteQueries,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -350,25 +356,25 @@ class QueryBowl extends InheritedWidget {
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
// InfiniteQuery<T, Outside, PageParam> _createInfiniteQueryWithDefaults<
|
InfiniteQuery<T, Outside, PageParam> _createInfiniteQueryWithDefaults<
|
||||||
// T extends Object, Outside, PageParam extends Object>(
|
T extends Object, Outside, PageParam extends Object>(
|
||||||
// InfiniteQueryJob<T, Outside, PageParam> options,
|
InfiniteQueryJob<T, Outside, PageParam> options,
|
||||||
// Outside externalData,
|
Outside externalData,
|
||||||
// ) {
|
) {
|
||||||
// final query = InfiniteQuery<T, Outside, PageParam>.fromOptions(
|
final infiniteQuery = InfiniteQuery<T, Outside, PageParam>.fromOptions(
|
||||||
// options,
|
options,
|
||||||
// externalData: externalData,
|
externalData: externalData,
|
||||||
// queryBowl: this,
|
queryBowl: this,
|
||||||
// );
|
);
|
||||||
// query.updateDefaultOptions(
|
infiniteQuery.updateDefaultOptions(
|
||||||
// cacheTime: cacheTime,
|
cacheTime: cacheTime,
|
||||||
// staleTime: staleTime,
|
staleTime: staleTime,
|
||||||
// refetchInterval: refetchInterval,
|
refetchInterval: refetchInterval,
|
||||||
// refetchOnMount: refetchOnMount,
|
refetchOnMount: refetchOnMount,
|
||||||
// refetchOnReconnect: refetchOnReconnect,
|
refetchOnReconnect: refetchOnReconnect,
|
||||||
// );
|
);
|
||||||
// return query;
|
return infiniteQuery;
|
||||||
// }
|
}
|
||||||
|
|
||||||
Future<T?> prefetchQuery<T extends Object, Outside>(
|
Future<T?> prefetchQuery<T extends Object, Outside>(
|
||||||
QueryJob<T, Outside> options, {
|
QueryJob<T, Outside> options, {
|
||||||
@@ -451,18 +457,15 @@ class QueryBowl extends InheritedWidget {
|
|||||||
// mounting the widget that is using the query in the prevQuery
|
// mounting the widget that is using the query in the prevQuery
|
||||||
return prevInfiniteQuery;
|
return prevInfiniteQuery;
|
||||||
}
|
}
|
||||||
// _createQueryWithDefaults<T, Outside, PageParam>(
|
|
||||||
// infiniteQueryJob,
|
final infiniteQuery =
|
||||||
// externalData,
|
_createInfiniteQueryWithDefaults<T, Outside, PageParam>(
|
||||||
// );
|
|
||||||
final infiniteQuery = InfiniteQuery<T, Outside, PageParam>.fromOptions(
|
|
||||||
infiniteQueryJob,
|
infiniteQueryJob,
|
||||||
externalData: externalData,
|
externalData,
|
||||||
queryBowl: this,
|
|
||||||
);
|
);
|
||||||
// if (onData != null) infiniteQuery.addDataListener(onData);
|
if (onData != null) infiniteQuery.addDataListener(onData);
|
||||||
// if (onError != null) infiniteQuery.addErrorListener(onError);
|
if (onError != null) infiniteQuery.addErrorListener(onError);
|
||||||
// infiniteQuery.mount(key);
|
infiniteQuery.mount(key);
|
||||||
_addInfiniteQuery<T, Outside, PageParam>(infiniteQuery);
|
_addInfiniteQuery<T, Outside, PageParam>(infiniteQuery);
|
||||||
return infiniteQuery;
|
return infiniteQuery;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,11 @@ class _QueryBuilderState<T extends Object, Outside>
|
|||||||
);
|
);
|
||||||
final hasExternalDataChanged = query!.externalData != null &&
|
final hasExternalDataChanged = query!.externalData != null &&
|
||||||
query!.prevUsedExternalData != null &&
|
query!.prevUsedExternalData != null &&
|
||||||
!isShallowEqual(query!.externalData!, query!.prevUsedExternalData!);
|
!isShallowEqual(
|
||||||
|
query!.externalData!,
|
||||||
|
query!.prevUsedExternalData!,
|
||||||
|
);
|
||||||
|
|
||||||
if (query!.fetched && hasExternalDataChanged) {
|
if (query!.fetched && hasExternalDataChanged) {
|
||||||
await query!.refetch();
|
await query!.refetch();
|
||||||
} else if (!query!.fetched) {
|
} else if (!query!.fetched) {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ dependencies:
|
|||||||
connectivity_plus: ^2.3.5
|
connectivity_plus: ^2.3.5
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
queue: ^3.1.0+1
|
||||||
uuid: ^3.0.6
|
uuid: ^3.0.6
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# This is a generated file; do not edit or check into version control.
|
# This is a generated file; do not edit or check into version control.
|
||||||
connectivity_plus=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/
|
connectivity_plus=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/
|
||||||
connectivity_plus_linux=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
connectivity_plus_linux=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
||||||
connectivity_plus_macos=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/
|
connectivity_plus_macos=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/
|
||||||
connectivity_plus_web=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/
|
connectivity_plus_web=/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-08-16 21:50:27.976582","version":"3.0.5"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6+1/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-14 11:35:42.984387","version":"3.3.0"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-08-16 21:50:30.683860","version":"3.0.5"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-14 11:35:47.051873","version":"3.3.0"}
|
||||||
@@ -14,7 +14,7 @@ packages:
|
|||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.2"
|
version: "2.9.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -28,21 +28,14 @@ packages:
|
|||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
charcode:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: charcode
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.1"
|
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -119,7 +112,7 @@ packages:
|
|||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -204,21 +197,21 @@ packages:
|
|||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.11"
|
version: "0.12.12"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.4"
|
version: "0.1.5"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.0"
|
version: "1.8.0"
|
||||||
nm:
|
nm:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -232,7 +225,7 @@ packages:
|
|||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.1"
|
version: "1.8.2"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -247,6 +240,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.2"
|
||||||
|
queue:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: queue
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0+1"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -258,7 +258,7 @@ packages:
|
|||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.2"
|
version: "1.9.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -279,21 +279,21 @@ packages:
|
|||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.9"
|
version: "0.4.12"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
Reference in New Issue
Block a user