Jonny Borges
Committed by GitHub

Bump to 2.11.1

Fix onInit called only once on SmartManagement.onlyBuilder
## [2.11.1]
- Fixed: oninit calling only once.
## [2.11.0]
- Added Permissions:
You can now revoke permissions to SmartManagement so that it cannot delete a particular controller.
... ...
... ... @@ -13,10 +13,10 @@ export 'src/rx/rx_event.dart';
export 'src/rx/rx_obx.dart';
export 'src/rx/rx_getbuilder.dart';
export 'src/root/root_widget.dart';
export 'src/root/smart_management.dart';
export 'src/routes/default_route.dart';
export 'src/routes/get_route.dart';
export 'src/routes/bindings_interface.dart';
export 'src/routes/observers/route_observer.dart';
export 'src/routes/transitions_type.dart';
export 'src/platform/platform.dart';
... ...
... ... @@ -729,7 +729,7 @@ class Get {
return Get().routesKey.containsKey(key);
}
registerRouteInstance<S>({String tag}) {
void registerRouteInstance<S>({String tag}) {
// print("Register route [$S] as ${Get.currentRoute}");
Get().routesKey.putIfAbsent(_getKey(S, tag), () => Get.currentRoute);
}
... ... @@ -754,7 +754,8 @@ class Get {
String key = _getKey(S, tag);
bool callInit = false;
if (Get.isRegistred<S>(tag: tag)) {
if (!isDependencyInit<S>()) {
if (!isDependencyInit<S>() &&
Get().smartManagement == SmartManagement.full) {
Get().registerRouteInstance<S>(tag: tag);
callInit = true;
}
... ... @@ -779,7 +780,8 @@ class Get {
if (isLogEnable) print('[GET] $S instance was created at that time');
S _value = Get.put<S>(Get()._factory[key].call() as S);
if (!isDependencyInit<S>()) {
if (!isDependencyInit<S>() &&
Get().smartManagement == SmartManagement.full) {
Get().registerRouteInstance<S>(tag: tag);
callInit = true;
}
... ...
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:get/src/get_main.dart';
import 'package:get/src/root/smart_management.dart';
import 'rx_impl.dart';
import 'rx_interface.dart';
... ... @@ -30,7 +30,6 @@ class GetX<T extends DisposableInterface> extends StatefulWidget {
class _GetXState<T extends DisposableInterface> extends State<GetX<T>> {
RxInterface _observer;
StreamSubscription _listenSubscription;
T controller;
bool isCreator = false;
... ... @@ -43,9 +42,6 @@ class _GetXState<T extends DisposableInterface> extends State<GetX<T>> {
bool isPrepared = Get.isPrepared<T>();
bool isRegistred = Get.isRegistred<T>();
if (widget.global) {
// if (Get().smartManagement == SmartManagement.full) {
// Get.isDependencyInit<T>();
// }
if (isPrepared) {
isCreator = true;
controller = Get.find<T>();
... ... @@ -63,11 +59,11 @@ class _GetXState<T extends DisposableInterface> extends State<GetX<T>> {
controller?.onInit();
}
if (widget.initState != null) widget.initState(this);
// if (isCreator) {
// controller?.onInit();
// }
if (isCreator && Get().smartManagement == SmartManagement.onlyBuilder) {
controller?.onInit();
}
_listenSubscription = _observer.subject.stream.listen((data) {
_observer.subject.stream.listen((data) {
setState(() {});
});
super.initState();
... ... @@ -87,8 +83,6 @@ class _GetXState<T extends DisposableInterface> extends State<GetX<T>> {
}
// controller.onClose();
_observer.close();
_listenSubscription?.cancel();
controller = null;
isCreator = null;
super.dispose();
... ...
... ... @@ -4,10 +4,9 @@ import 'rx_callbacks.dart';
import 'rx_interface.dart';
import 'rx_model.dart';
class _StoredValue<T> implements RxInterface<T> {
class _RxImpl<T> implements RxInterface<T> {
StreamController<Change<T>> subject = StreamController<Change<T>>.broadcast();
StreamController<Change<T>> _changeCtl =
StreamController<Change<T>>.broadcast();
StreamController<Change<T>> _changeCtl = StreamController<Change<T>>();
Map<Stream<Change<T>>, StreamSubscription> _subscriptions = Map();
T _value;
... ... @@ -50,7 +49,7 @@ class _StoredValue<T> implements RxInterface<T> {
int _cb = 0;
_StoredValue([T initial]) : _value = initial {
_RxImpl([T initial]) : _value = initial {
_onChange = subject.stream.asBroadcastStream();
}
... ... @@ -91,28 +90,28 @@ class _StoredValue<T> implements RxInterface<T> {
Stream<R> map<R>(R mapper(T data)) => stream.map(mapper);
}
class StringX<String> extends _StoredValue<String> {
class StringX<String> extends _RxImpl<String> {
StringX([String initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
class IntX<int> extends _StoredValue<int> {
class IntX<int> extends _RxImpl<int> {
IntX([int initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
class MapX<Map> extends _StoredValue<Map> {
class MapX<Map> extends _RxImpl<Map> {
MapX([Map initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
// class ListX<List> extends _StoredValue<List> {
// class ListX<List> extends _RxImpl<List> {
// ListX([List initial]) {
// _value = initial;
// _onChange = subject.stream.asBroadcastStream();
... ... @@ -529,28 +528,28 @@ typedef E ChildrenListComposer<S, E>(S value);
// }
// }
class BoolX<bool> extends _StoredValue<bool> {
class BoolX<bool> extends _RxImpl<bool> {
BoolX([bool initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
class DoubleX<double> extends _StoredValue<double> {
class DoubleX<double> extends _RxImpl<double> {
DoubleX([double initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
class NumX<num> extends _StoredValue<num> {
class NumX<num> extends _RxImpl<num> {
NumX([num initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
}
}
class Rx<T> extends _StoredValue<T> {
class Rx<T> extends _RxImpl<T> {
Rx([T initial]) {
_value = initial;
_onChange = subject.stream.asBroadcastStream();
... ...
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:get/src/rx/rx_interface.dart';
import '../get_main.dart';
... ... @@ -6,30 +5,43 @@ import 'rx_impl.dart';
Widget obx(Widget Function() builder) {
final b = builder;
return Obx(b);
return Obxx(b);
}
/// it's very very very very experimental, or now, it's just tests.
class Obxx extends StatelessWidget {
final Widget Function() builder;
Obxx(this.builder, {Key key}) : super(key: key);
final RxInterface _observer = Rx();
@override
Widget build(_) {
_observer.subject.stream.listen((data) => (_ as Element)..markNeedsBuild());
final observer = Get.obs;
Get.obs = _observer;
final result = builder();
Get.obs = observer;
return result;
}
}
class Obx extends StatefulWidget {
final Widget Function() builder;
const Obx(
this.builder,
);
const Obx(this.builder);
_ObxState createState() => _ObxState();
}
class _ObxState extends State<Obx> {
RxInterface _observer;
StreamSubscription _listenSubscription;
bool isCreator = false;
_ObxState() {
_observer = ListX();
_observer = Rx();
}
@override
void initState() {
_listenSubscription = _observer.subject.stream.listen((data) {
_observer.subject.stream.listen((data) {
setState(() {});
});
super.initState();
... ... @@ -38,7 +50,6 @@ class _ObxState extends State<Obx> {
@override
void dispose() {
_observer.close();
_listenSubscription?.cancel();
super.dispose();
}
... ...
name: get
description: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get.
version: 2.11.0
version: 2.11.1
homepage: https://github.com/jonataslaw/get
environment:
... ...