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