Nana Axel
Committed by GitHub

Ability to find a tagged controller in GetX

@@ -18,8 +18,10 @@ class GetX<T extends DisposableInterface> extends StatefulWidget { @@ -18,8 +18,10 @@ class GetX<T extends DisposableInterface> extends StatefulWidget {
18 final void Function(State state) initState, dispose, didChangeDependencies; 18 final void Function(State state) initState, dispose, didChangeDependencies;
19 final void Function(GetX oldWidget, State state) didUpdateWidget; 19 final void Function(GetX oldWidget, State state) didUpdateWidget;
20 final T init; 20 final T init;
  21 + final String tag;
21 22
22 const GetX({ 23 const GetX({
  24 + this.tag = null,
23 this.builder, 25 this.builder,
24 this.global = true, 26 this.global = true,
25 this.autoRemove = true, 27 this.autoRemove = true,
@@ -45,22 +47,22 @@ class GetImplXState<T extends DisposableInterface> extends State<GetX<T>> { @@ -45,22 +47,22 @@ class GetImplXState<T extends DisposableInterface> extends State<GetX<T>> {
45 @override 47 @override
46 void initState() { 48 void initState() {
47 _observer = Rx(); 49 _observer = Rx();
48 - var isPrepared = GetInstance().isPrepared<T>();  
49 - var isRegistered = GetInstance().isRegistered<T>(); 50 + var isPrepared = GetInstance().isPrepared<T>(tag: tag);
  51 + var isRegistered = GetInstance().isRegistered<T>(tag: tag);
50 52
51 if (widget.global) { 53 if (widget.global) {
52 if (isPrepared) { 54 if (isPrepared) {
53 if (GetConfig.smartManagement != SmartManagement.keepFactory) { 55 if (GetConfig.smartManagement != SmartManagement.keepFactory) {
54 isCreator = true; 56 isCreator = true;
55 } 57 }
56 - controller = GetInstance().find<T>(); 58 + controller = GetInstance().find<T>(tag: tag);
57 } else if (isRegistered) { 59 } else if (isRegistered) {
58 - controller = GetInstance().find<T>(); 60 + controller = GetInstance().find<T>(tag: tag);
59 isCreator = false; 61 isCreator = false;
60 } else { 62 } else {
61 controller = widget.init; 63 controller = widget.init;
62 isCreator = true; 64 isCreator = true;
63 - GetInstance().put<T>(controller); 65 + GetInstance().put<T>(controller, tag: tag);
64 } 66 }
65 } else { 67 } else {
66 controller = widget.init; 68 controller = widget.init;
@@ -94,8 +96,8 @@ class GetImplXState<T extends DisposableInterface> extends State<GetX<T>> { @@ -94,8 +96,8 @@ class GetImplXState<T extends DisposableInterface> extends State<GetX<T>> {
94 void dispose() { 96 void dispose() {
95 if (widget.dispose != null) widget.dispose(this); 97 if (widget.dispose != null) widget.dispose(this);
96 if (isCreator || widget.assignId) { 98 if (isCreator || widget.assignId) {
97 - if (widget.autoRemove && GetInstance().isRegistered<T>()) {  
98 - GetInstance().delete<T>(); 99 + if (widget.autoRemove && GetInstance().isRegistered<T>(tag: tag)) {
  100 + GetInstance().delete<T>(tag: tag);
99 } 101 }
100 } 102 }
101 subs.cancel(); 103 subs.cancel();