Showing
2 changed files
with
16 additions
and
0 deletions
@@ -128,4 +128,12 @@ extension Inst on GetInterface { | @@ -128,4 +128,12 @@ extension Inst on GetInterface { | ||
128 | /// [Get.lazyPut()], is registered in memory. | 128 | /// [Get.lazyPut()], is registered in memory. |
129 | /// - [tag] optional, if you use a [tag] to register the Instance. | 129 | /// - [tag] optional, if you use a [tag] to register the Instance. |
130 | bool isPrepared<S>({String? tag}) => GetInstance().isPrepared<S>(tag: tag); | 130 | bool isPrepared<S>({String? tag}) => GetInstance().isPrepared<S>(tag: tag); |
131 | + | ||
132 | + /// Replace a parent instance of a class in dependency management | ||
133 | + /// with a [child] instance | ||
134 | + void replace<P, C extends P>(C child, {String? tag, bool permanent = false}) { | ||
135 | + delete<P>(); | ||
136 | + // ignore: unnecessary_cast | ||
137 | + put(child as P, tag: tag, permanent: permanent); | ||
138 | + } | ||
131 | } | 139 | } |
1 | import 'package:flutter_test/flutter_test.dart'; | 1 | import 'package:flutter_test/flutter_test.dart'; |
2 | import 'package:get/get.dart'; | 2 | import 'package:get/get.dart'; |
3 | + | ||
3 | import 'util/matcher.dart' as m; | 4 | import 'util/matcher.dart' as m; |
4 | 5 | ||
5 | class Mock { | 6 | class Mock { |
@@ -155,6 +156,13 @@ void main() { | @@ -155,6 +156,13 @@ void main() { | ||
155 | expect(instance.initialized, true); | 156 | expect(instance.initialized, true); |
156 | }); | 157 | }); |
157 | }); | 158 | }); |
159 | + | ||
160 | + test('Get.replace test for replacing parent instance with child', () async { | ||
161 | + Get.replace<DisposableController, Controller>(Controller()); | ||
162 | + final instance = Get.find<DisposableController>(); | ||
163 | + expect(instance is Controller, isTrue); | ||
164 | + expect((instance as Controller).init, greaterThan(0)); | ||
165 | + }); | ||
158 | } | 166 | } |
159 | 167 | ||
160 | class Controller extends DisposableController { | 168 | class Controller extends DisposableController { |
-
Please register or login to post a comment