feat: useInfiniteQuery hook add
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:fl_query/src/core/client.dart';
|
||||
import 'package:fl_query/src/core/infinite_query.dart';
|
||||
import 'package:fl_query/src/widgets/mixins/rebuilder.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/foundation/diagnostics.dart';
|
||||
|
||||
typedef InfiniteQueryBuilderFn<DataType, ErrorType, PageType> = Widget Function(
|
||||
BuildContext context,
|
||||
@@ -68,15 +69,7 @@ class _InfiniteQueryBuilderState<DataType, ErrorType, PageType>
|
||||
|
||||
Future<void> initialize() async {
|
||||
setState(() {
|
||||
query = QueryClient.of(context).createInfiniteQuery(
|
||||
widget.queryKey,
|
||||
widget.queryFn,
|
||||
initialParam: widget.initialPage,
|
||||
nextPage: widget.nextPage,
|
||||
retryConfig: widget.retryConfig,
|
||||
refreshConfig: widget.refreshConfig,
|
||||
jsonConfig: widget.jsonConfig,
|
||||
);
|
||||
_createQuery();
|
||||
|
||||
if (widget.onData != null)
|
||||
dataSubscription = query!.dataStream.listen(widget.onData);
|
||||
@@ -90,6 +83,18 @@ class _InfiniteQueryBuilderState<DataType, ErrorType, PageType>
|
||||
}
|
||||
}
|
||||
|
||||
void _createQuery() {
|
||||
query = QueryClient.of(context).createInfiniteQuery(
|
||||
widget.queryKey,
|
||||
widget.queryFn,
|
||||
initialParam: widget.initialPage,
|
||||
nextPage: widget.nextPage,
|
||||
retryConfig: widget.retryConfig,
|
||||
refreshConfig: widget.refreshConfig,
|
||||
jsonConfig: widget.jsonConfig,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -140,8 +145,61 @@ class _InfiniteQueryBuilderState<DataType, ErrorType, PageType>
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (query == null) {
|
||||
return const SizedBox.shrink();
|
||||
_createQuery();
|
||||
}
|
||||
return widget.builder(context, query!);
|
||||
}
|
||||
|
||||
@override
|
||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||
super.debugFillProperties(properties);
|
||||
properties.add(DiagnosticsProperty<
|
||||
InfiniteQueryBuilderFn<DataType, ErrorType, PageType>>(
|
||||
'builder',
|
||||
widget.builder,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<InfiniteQueryFn<DataType, PageType>>(
|
||||
'queryFn',
|
||||
widget.queryFn,
|
||||
));
|
||||
properties
|
||||
.add(DiagnosticsProperty<InfiniteQueryNextPage<DataType, PageType>>(
|
||||
'nextPage',
|
||||
widget.nextPage,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<PageType>(
|
||||
'initialPage',
|
||||
widget.initialPage,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<RetryConfig>(
|
||||
'retryConfig',
|
||||
widget.retryConfig,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<RefreshConfig>(
|
||||
'refreshConfig',
|
||||
widget.refreshConfig,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<JsonConfig<DataType>>(
|
||||
'jsonConfig',
|
||||
widget.jsonConfig,
|
||||
));
|
||||
properties
|
||||
.add(DiagnosticsProperty<ValueChanged<PageEvent<DataType, PageType>>>(
|
||||
'onData',
|
||||
widget.onData,
|
||||
));
|
||||
properties
|
||||
.add(DiagnosticsProperty<ValueChanged<PageEvent<ErrorType, PageType>>>(
|
||||
'onError',
|
||||
widget.onError,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<bool>(
|
||||
'enabled',
|
||||
widget.enabled,
|
||||
));
|
||||
properties.add(DiagnosticsProperty<String>(
|
||||
'queryKey',
|
||||
widget.queryKey,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,11 +123,7 @@ class _MutationBuilderState<DataType, ErrorType, VariablesType, RecoveryType>
|
||||
|
||||
Future<void> initialize() async {
|
||||
setState(() {
|
||||
mutation = QueryClient.of(context).createMutation(
|
||||
widget.mutationKey,
|
||||
widget.mutationFn,
|
||||
retryConfig: widget.retryConfig,
|
||||
);
|
||||
_createMutation();
|
||||
subscribeOnMutate();
|
||||
subscribeOnData();
|
||||
subscribeOnError();
|
||||
@@ -135,6 +131,14 @@ class _MutationBuilderState<DataType, ErrorType, VariablesType, RecoveryType>
|
||||
});
|
||||
}
|
||||
|
||||
void _createMutation() {
|
||||
mutation = QueryClient.of(context).createMutation(
|
||||
widget.mutationKey,
|
||||
widget.mutationFn,
|
||||
retryConfig: widget.retryConfig,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -190,7 +194,7 @@ class _MutationBuilderState<DataType, ErrorType, VariablesType, RecoveryType>
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (mutation == null) {
|
||||
return const SizedBox.shrink();
|
||||
_createMutation();
|
||||
}
|
||||
return widget.builder(context, mutation!);
|
||||
}
|
||||
|
||||
@@ -63,17 +63,20 @@ class _QueryBuilderState<DataType, ErrorType>
|
||||
StreamSubscription<DataType>? dataSubscription;
|
||||
StreamSubscription<ErrorType>? errorSubscription;
|
||||
|
||||
void _createQuery() {
|
||||
query = QueryClient.of(context).createQuery(
|
||||
widget.queryKey,
|
||||
widget.queryFn,
|
||||
initial: widget.initial,
|
||||
retryConfig: widget.retryConfig,
|
||||
refreshConfig: widget.refreshConfig,
|
||||
jsonConfig: widget.jsonConfig,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> initialize() async {
|
||||
setState(() {
|
||||
query = QueryClient.of(context).createQuery(
|
||||
widget.queryKey,
|
||||
widget.queryFn,
|
||||
initial: widget.initial,
|
||||
retryConfig: widget.retryConfig,
|
||||
refreshConfig: widget.refreshConfig,
|
||||
jsonConfig: widget.jsonConfig,
|
||||
);
|
||||
|
||||
_createQuery();
|
||||
if (widget.onData != null)
|
||||
dataSubscription = query!.dataStream.listen(widget.onData);
|
||||
if (widget.onData != null)
|
||||
@@ -135,7 +138,7 @@ class _QueryBuilderState<DataType, ErrorType>
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (query == null) {
|
||||
return const SizedBox.shrink();
|
||||
_createQuery();
|
||||
}
|
||||
return widget.builder(context, query!);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user