Jonatas

remove queue from instance manager

... ... @@ -4,7 +4,6 @@ import 'dart:collection';
import 'package:get_core/get_core.dart';
import 'lifecycle.dart';
import 'utils/secure_operations.dart';
class GetInstance {
factory GetInstance() => _getInstance ??= GetInstance._();
... ... @@ -141,7 +140,7 @@ class GetInstance {
/// using [Get.smartManagement] as [SmartManagement.full] or
/// [SmartManagement.keepFactory]
/// Meant for internal usage of [GetPageRoute] and [GetDialogRoute]
Future<void> removeDependencyByRoute(String routeName) async {
void removeDependencyByRoute(String routeName) {
final keysToRemove = <String>[];
_routesKey.forEach((key, value) {
if (value == routeName) {
... ... @@ -155,7 +154,7 @@ class GetInstance {
// assure the [DisposableInterface] instance holding a reference
// to [onClose()] wasn't disposed.
if (onClose != null) {
await onClose();
onClose();
}
}
_routesByCreate[routeName].clear();
... ... @@ -163,7 +162,7 @@ class GetInstance {
}
for (final element in keysToRemove) {
await delete(key: element);
delete(key: element);
}
for (final element in keysToRemove) {
... ... @@ -306,8 +305,6 @@ class GetInstance {
return true;
}
static final GetQueue _queue = GetQueue();
/// Delete registered Class Instance [S] (or [tag]) and, closes any open
/// controllers [DisposableInterface], cleans up the memory
///
... ...
import 'dart:async';
class GetQueue {
final List<_Item> _queue = [];
bool _active = false;
void _check() async {
if (!_active && _queue.isNotEmpty) {
_active = true;
var item = _queue.removeAt(0);
try {
item.completer.complete(await item.job());
} on Exception catch (e) {
item.completer.completeError(e);
}
_active = false;
_check();
}
}
Future<T> secure<T>(Function job) {
var completer = Completer<T>();
_queue.add(_Item<T>(completer, job));
_check();
return completer.future;
}
}
class _Item<T> {
final Completer<T> completer;
final Function job;
_Item(this.completer, this.job);
}
... ... @@ -50,6 +50,10 @@ abstract class GetWidget<T extends GetLifeCycle> extends GetStatelessWidget {
return _value.first;
}
// void restartChilds(){
// }
@override
Widget build(BuildContext context);
}
... ... @@ -89,6 +93,13 @@ class GetStatelessElement extends ComponentElement {
rebuild();
}
void forceAppUpdate() {
markNeedsBuild();
visitChildren((child) {
(child as GetStatelessElement).forceAppUpdate();
});
}
@override
void mount(Element parent, dynamic newSlot) {
widget.controller?.onStart();
... ...