Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jonatas
2020-11-09 19:39:57 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
281ec40fcb09cb90171c1b3cf1fca3cde619c29d
281ec40f
1 parent
19b983f1
fix concurrent modification
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
7 deletions
lib/get_rx/src/rx_stream/get_stream.dart
lib/get_rx/src/rx_stream/rx_stream.dart
lib/get_rx/src/rx_workers/rx_workers.dart
lib/get_rx/src/rx_stream/get_stream.dart
View file @
281ec40
...
...
@@ -55,6 +55,8 @@ You cannot ${isClosed ? "close" : "add events to"} a closed stream.''';
listenable
.
addSubscription
(
subs
);
return
subs
;
}
Stream
<
T
>
get
stream
=>
GetStreamTransformation
(
listenable
);
}
class
LightListenable
<
T
>
{
...
...
@@ -125,7 +127,10 @@ class LightSubscription<T> extends StreamSubscription<T> {
bool
cancelOnError
=
false
;
@override
Future
<
void
>
cancel
()
async
=>
listener
.
removeSubscription
(
this
);
Future
<
void
>
cancel
()
{
listener
.
removeSubscription
(
this
);
return
Future
.
value
();
}
OnData
<
T
>
_data
;
...
...
lib/get_rx/src/rx_stream/rx_stream.dart
View file @
281ec40
library
rx_stream
;
import
'dart:async'
;
import
'package:flutter/scheduler.dart'
;
import
'../rx_typedefs/rx_typedefs.dart'
;
part
'get_stream.dart'
;
...
...
lib/get_rx/src/rx_workers/rx_workers.dart
View file @
281ec40
...
...
@@ -11,6 +11,8 @@ bool _conditional(dynamic condition) {
return
true
;
}
typedef
WorkerCallback
<
T
>
=
Function
(
T
callback
);
///
/// Called every time [listener] changes. As long as the [condition]
/// returns true.
...
...
@@ -41,7 +43,7 @@ bool _conditional(dynamic condition) {
/// void increment() => count + 1;
/// }
/// ```
Worker
ever
<
T
>(
RxInterface
<
T
>
listener
,
Function
(
T
)
callback
,
Worker
ever
<
T
>(
RxInterface
<
T
>
listener
,
WorkerCallback
<
T
>
callback
,
{
dynamic
condition
=
true
})
{
StreamSubscription
sub
=
listener
.
subject
.
listen
((
event
)
{
if
(
_conditional
(
condition
))
callback
(
event
);
...
...
@@ -53,7 +55,7 @@ Worker ever<T>(RxInterface<T> listener, Function(T) callback,
/// for the [callback] is common to all [listeners],
/// and the [callback] is executed to each one of them. The [Worker] is
/// common to all, so [worker.dispose()] will cancel all streams.
Worker
everAll
(
List
<
RxInterface
>
listeners
,
Function
(
dynamic
)
callback
,
Worker
everAll
(
List
<
RxInterface
>
listeners
,
WorkerCallback
callback
,
{
dynamic
condition
=
true
})
{
final
evers
=
<
StreamSubscription
>[];
for
(
var
i
in
listeners
)
{
...
...
@@ -94,7 +96,7 @@ Worker everAll(List<RxInterface> listeners, Function(dynamic) callback,
/// void increment() => count + 1;
/// }
///```
Worker
once
<
T
>(
RxInterface
<
T
>
listener
,
Function
(
T
)
callback
,
Worker
once
<
T
>(
RxInterface
<
T
>
listener
,
WorkerCallback
<
T
>
callback
,
{
dynamic
condition
})
{
Worker
ref
;
StreamSubscription
sub
;
...
...
@@ -102,8 +104,10 @@ Worker once<T>(RxInterface<T> listener, Function(T) callback,
if
(!
_conditional
(
condition
))
return
;
ref
.
_disposed
=
true
;
ref
.
_log
(
'called'
);
sub
?.
cancel
();
callback
(
event
);
Timer
.
run
(()
{
sub
?.
cancel
();
});
});
ref
=
Worker
(
sub
.
cancel
,
'[once]'
);
return
ref
;
...
...
@@ -126,7 +130,7 @@ Worker once<T>(RxInterface<T> listener, Function(T) callback,
/// condition: () => count < 20,
/// );
/// ```
Worker
interval
<
T
>(
RxInterface
<
T
>
listener
,
Function
(
T
)
callback
,
Worker
interval
<
T
>(
RxInterface
<
T
>
listener
,
WorkerCallback
<
T
>
callback
,
{
Duration
time
=
const
Duration
(
seconds:
1
),
dynamic
condition
=
true
})
{
var
debounceActive
=
false
;
time
??=
const
Duration
(
seconds:
1
);
...
...
@@ -159,7 +163,7 @@ Worker interval<T>(RxInterface<T> listener, Function(T) callback,
/// );
/// }
/// ```
Worker
debounce
<
T
>(
RxInterface
<
T
>
listener
,
Function
(
T
)
callback
,
Worker
debounce
<
T
>(
RxInterface
<
T
>
listener
,
WorkerCallback
<
T
>
callback
,
{
Duration
time
})
{
final
_debouncer
=
Debouncer
(
delay:
time
??
const
Duration
(
milliseconds:
800
));
...
...
Please
register
or
login
to post a comment