1
+ import 'dart:async' ;
1
2
import 'dart:math' ;
2
3
3
4
import 'package:meta/meta.dart' ;
@@ -126,6 +127,19 @@ class Signal0 extends SignalCallable {
126
127
_subscriptions.unsubscribe (subscriptionKey);
127
128
}
128
129
130
+ Future <void > asFuture (GodotObject target) {
131
+ final completer = Completer <void >();
132
+ var subscriptionKey = 0 ;
133
+ subscriptionKey = connect (target, () {
134
+ completer.complete ();
135
+ });
136
+
137
+ completer.future.then ((_) {
138
+ disconnect (subscriptionKey);
139
+ });
140
+ return completer.future;
141
+ }
142
+
129
143
@override
130
144
void unsubscribeAll (GodotObject target) {
131
145
_subscriptions.unsubscribeAll (target);
@@ -157,6 +171,20 @@ class Signal1<P1> extends SignalCallable {
157
171
_subscriptions.unsubscribe (subscriptionKey);
158
172
}
159
173
174
+ Future <P1 > asFuture (GodotObject target) {
175
+ final completer = Completer <P1 >();
176
+ var subscriptionKey = 0 ;
177
+ subscriptionKey = connect (target, (p1) {
178
+ completer.complete (p1);
179
+ });
180
+
181
+ completer.future.then ((_) {
182
+ disconnect (subscriptionKey);
183
+ });
184
+
185
+ return completer.future;
186
+ }
187
+
160
188
@override
161
189
void clear () => _subscriptions.clear ();
162
190
@@ -191,6 +219,20 @@ class Signal2<P1, P2> extends SignalCallable {
191
219
_subscriptions.unsubscribe (subscriptionKey);
192
220
}
193
221
222
+ Future <(P1 , P2 )> asFuture (GodotObject target) {
223
+ final completer = Completer <(P1 , P2 )>();
224
+ var subscriptionKey = 0 ;
225
+ subscriptionKey = connect (target, (p1, p2) {
226
+ completer.complete ((p1, p2));
227
+ });
228
+
229
+ completer.future.then ((_) {
230
+ disconnect (subscriptionKey);
231
+ });
232
+
233
+ return completer.future;
234
+ }
235
+
194
236
@override
195
237
void clear () => _subscriptions.clear ();
196
238
@@ -226,6 +268,20 @@ class Signal3<P1, P2, P3> extends SignalCallable {
226
268
_subscriptions.unsubscribe (subscriptionKey);
227
269
}
228
270
271
+ Future <(P1 , P2 , P3 )> asFuture (GodotObject target) {
272
+ final completer = Completer <(P1 , P2 , P3 )>();
273
+ var subscriptionKey = 0 ;
274
+ subscriptionKey = connect (target, (p1, p2, p3) {
275
+ completer.complete ((p1, p2, p3));
276
+ });
277
+
278
+ completer.future.then ((_) {
279
+ disconnect (subscriptionKey);
280
+ });
281
+
282
+ return completer.future;
283
+ }
284
+
229
285
@override
230
286
void clear () => _subscriptions.clear ();
231
287
@@ -262,6 +318,20 @@ class Signal4<P1, P2, P3, P4> extends SignalCallable {
262
318
_subscriptions.unsubscribe (subscriptionKey);
263
319
}
264
320
321
+ Future <(P1 , P2 , P3 , P4 )> asFuture (GodotObject target) {
322
+ final completer = Completer <(P1 , P2 , P3 , P4 )>();
323
+ var subscriptionKey = 0 ;
324
+ subscriptionKey = connect (target, (p1, p2, p3, p4) {
325
+ completer.complete ((p1, p2, p3, p4));
326
+ });
327
+
328
+ completer.future.then ((_) {
329
+ disconnect (subscriptionKey);
330
+ });
331
+
332
+ return completer.future;
333
+ }
334
+
265
335
@override
266
336
void clear () => _subscriptions.clear ();
267
337
@@ -286,7 +356,7 @@ class Signal5<P1, P2, P3, P4, P5> extends SignalCallable {
286
356
args[1 ].cast <P2 >() as P2 ,
287
357
args[2 ].cast <P3 >() as P3 ,
288
358
args[3 ].cast <P4 >() as P4 ,
289
- args[4 ].cast <P4 >() as P5 ,
359
+ args[4 ].cast <P5 >() as P5 ,
290
360
);
291
361
}
292
362
}
@@ -299,6 +369,20 @@ class Signal5<P1, P2, P3, P4, P5> extends SignalCallable {
299
369
_subscriptions.unsubscribe (subscriptionKey);
300
370
}
301
371
372
+ Future <(P1 , P2 , P3 , P4 , P5 )> asFuture (GodotObject target) {
373
+ final completer = Completer <(P1 , P2 , P3 , P4 , P5 )>();
374
+ var subscriptionKey = 0 ;
375
+ subscriptionKey = connect (target, (p1, p2, p3, p4, p5) {
376
+ completer.complete ((p1, p2, p3, p4, p5));
377
+ });
378
+
379
+ completer.future.then ((_) {
380
+ disconnect (subscriptionKey);
381
+ });
382
+
383
+ return completer.future;
384
+ }
385
+
302
386
@override
303
387
void clear () => _subscriptions.clear ();
304
388
0 commit comments