Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jermaine McFarlane
2021-07-21 22:11:58 -0500
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
75dcf95d0444e50958d4e474757a870152bd015f
75dcf95d
1 parent
fa3939ed
add lazyReplace method
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
0 deletions
lib/get_instance/src/extension_instance.dart
test/instance/get_instance_test.dart
lib/get_instance/src/extension_instance.dart
View file @
75dcf95
...
...
@@ -139,4 +139,19 @@ extension Inst on GetInterface {
// ignore: unnecessary_cast
put
(
child
as
P
,
tag:
tag
,
permanent:
permanent
);
}
/// Replaces a parent instance with a new Instance<P> lazily from the
/// [<P>builder()] callback.
/// - [tag] optional, if you use a [tag] to register the Instance.
/// - [fenix] optional
///
/// Note: if fenix is not provided it will be set to true if
/// the parent instance was permanent
void
lazyReplace
<
P
>(
InstanceBuilderCallback
<
P
>
builder
,
{
String
?
tag
,
bool
?
fenix
})
{
final
info
=
GetInstance
().
getInstanceInfo
<
P
>(
tag:
tag
);
final
permanent
=
(
info
.
isPermanent
??
false
);
delete
<
P
>(
tag:
tag
,
force:
permanent
);
lazyPut
(
builder
,
tag:
tag
,
fenix:
fenix
??
permanent
);
}
}
...
...
test/instance/get_instance_test.dart
View file @
75dcf95
...
...
@@ -160,6 +160,7 @@ void main() {
});
group
(
'Get.replace test for replacing parent instance that is'
,
()
{
tearDown
(
Get
.
reset
);
test
(
'temporary'
,
()
async
{
Get
.
put
(
DisposableController
());
Get
.
replace
<
DisposableController
>(
Controller
());
...
...
@@ -203,6 +204,40 @@ void main() {
expect
((
instance
as
Controller
).
init
,
greaterThan
(
0
));
});
});
group
(
'Get.lazyReplace replaces parent instance'
,
()
{
tearDown
(
Get
.
reset
);
test
(
'without fenix'
,
()
async
{
Get
.
put
(
DisposableController
());
Get
.
lazyReplace
<
DisposableController
>(()
=>
Controller
());
final
instance
=
Get
.
find
<
DisposableController
>();
expect
(
instance
,
isA
<
Controller
>());
expect
((
instance
as
Controller
).
init
,
greaterThan
(
0
));
});
test
(
'with fenix'
,
()
async
{
Get
.
put
(
DisposableController
());
Get
.
lazyReplace
<
DisposableController
>(()
=>
Controller
(),
fenix:
true
);
expect
(
Get
.
find
<
DisposableController
>(),
isA
<
Controller
>());
(
Get
.
find
<
DisposableController
>()
as
Controller
).
increment
();
expect
((
Get
.
find
<
DisposableController
>()
as
Controller
).
count
,
1
);
Get
.
delete
<
DisposableController
>();
expect
((
Get
.
find
<
DisposableController
>()
as
Controller
).
count
,
0
);
});
test
(
'with fenix when parent is permanent'
,
()
async
{
Get
.
put
(
DisposableController
(),
permanent:
true
);
Get
.
lazyReplace
<
DisposableController
>(()
=>
Controller
());
final
instance
=
Get
.
find
<
DisposableController
>();
expect
(
instance
,
isA
<
Controller
>());
(
instance
as
Controller
).
increment
();
expect
((
Get
.
find
<
DisposableController
>()
as
Controller
).
count
,
1
);
Get
.
delete
<
DisposableController
>();
expect
((
Get
.
find
<
DisposableController
>()
as
Controller
).
count
,
0
);
});
});
}
class
Controller
extends
DisposableController
{
...
...
Please
register
or
login
to post a comment