Committed by
GitHub
Merge pull request #595 from na2axl/master
[Feature] Ability to use tags with GetX widgets
Showing
2 changed files
with
10 additions
and
8 deletions
@@ -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, | ||
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: widget.tag); |
51 | + var isRegistered = GetInstance().isRegistered<T>(tag: widget.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: widget.tag); |
57 | } else if (isRegistered) { | 59 | } else if (isRegistered) { |
58 | - controller = GetInstance().find<T>(); | 60 | + controller = GetInstance().find<T>(tag: widget.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: widget.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: widget.tag)) { |
100 | + GetInstance().delete<T>(tag: widget.tag); | ||
99 | } | 101 | } |
100 | } | 102 | } |
101 | subs.cancel(); | 103 | subs.cancel(); |
@@ -40,7 +40,7 @@ abstract class GetWidget<T> extends StatelessWidget { | @@ -40,7 +40,7 @@ abstract class GetWidget<T> extends StatelessWidget { | ||
40 | final String tag = null; | 40 | final String tag = null; |
41 | 41 | ||
42 | T get controller { | 42 | T get controller { |
43 | - if (_value.isEmpty) _value.add(GetInstance().find<T>()); | 43 | + if (_value.isEmpty) _value.add(GetInstance().find<T>(tag: tag)); |
44 | return _value.first; | 44 | return _value.first; |
45 | } | 45 | } |
46 | 46 |
-
Please register or login to post a comment