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
Jonatas
2020-12-26 21:19:50 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
124ae6e4df45217a05afabdd8cb8d7fe291f89f9
124ae6e4
1 parent
80f7d490
added selector to GetBuilder
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
9 deletions
lib/get_state_manager/src/simple/get_state.dart
lib/get_state_manager/src/simple/get_state.dart
View file @
124ae6e
...
...
@@ -50,6 +50,7 @@ class GetBuilder<T extends GetxController> extends StatefulWidget {
final
String
tag
;
final
bool
autoRemove
;
final
bool
assignId
;
final
Object
Function
(
T
value
)
selector
;
final
void
Function
(
State
state
)
initState
,
dispose
,
didChangeDependencies
;
final
void
Function
(
GetBuilder
oldWidget
,
State
state
)
didUpdateWidget
;
final
T
init
;
...
...
@@ -62,6 +63,7 @@ class GetBuilder<T extends GetxController> extends StatefulWidget {
this
.
autoRemove
=
true
,
this
.
assignId
=
false
,
this
.
initState
,
this
.
selector
,
this
.
tag
,
this
.
dispose
,
this
.
id
,
...
...
@@ -96,14 +98,13 @@ class GetBuilder<T extends GetxController> extends StatefulWidget {
class
_GetBuilderState
<
T
extends
GetxController
>
extends
State
<
GetBuilder
<
T
>>
with
GetStateUpdaterMixin
{
T
controller
;
bool
isCreator
=
false
;
VoidCallback
remove
;
Object
_selector
;
@override
void
initState
()
{
super
.
initState
();
widget
.
initState
?.
call
(
this
);
var
isRegistered
=
GetInstance
().
isRegistered
<
T
>(
tag:
widget
.
tag
);
...
...
@@ -127,6 +128,10 @@ class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>>
controller
?.
onStart
();
}
if
(
widget
.
selector
!=
null
)
{
_selector
=
widget
.
selector
(
controller
);
}
_subscribeToController
();
}
...
...
@@ -136,14 +141,27 @@ class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>>
void
_subscribeToController
()
{
remove
?.
call
();
remove
=
(
widget
.
id
==
null
)
?
controller
?.
addListener
(
getUpdate
)
:
controller
?.
addListenerId
(
widget
.
id
,
getUpdate
);
?
controller
?.
addListener
(
_selector
!=
null
?
_selectorUpdate
:
getUpdate
,
)
:
controller
?.
addListenerId
(
widget
.
id
,
_selector
!=
null
?
_selectorUpdate
:
getUpdate
,
);
}
void
_selectorUpdate
()
{
var
newSelector
=
widget
.
selector
(
controller
);
if
(
newSelector
!=
_selector
)
{
_selector
=
newSelector
;
getUpdate
();
}
}
@override
void
dispose
()
{
super
.
dispose
();
if
(
widget
.
dispose
!=
null
)
widget
.
dispose
(
this
);
widget
.
dispose
?.
call
(
this
);
if
(
isCreator
||
widget
.
assignId
)
{
if
(
widget
.
autoRemove
&&
GetInstance
().
isRegistered
<
T
>(
tag:
widget
.
tag
))
{
GetInstance
().
delete
<
T
>(
tag:
widget
.
tag
);
...
...
@@ -151,14 +169,17 @@ class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>>
}
remove
?.
call
();
controller
=
null
;
isCreator
=
null
;
remove
=
null
;
_selector
=
null
;
}
@override
void
didChangeDependencies
()
{
super
.
didChangeDependencies
();
if
(
widget
.
didChangeDependencies
!=
null
)
{
widget
.
didChangeDependencies
(
this
);
}
widget
.
didChangeDependencies
?.
call
(
this
);
}
@override
...
...
@@ -168,7 +189,7 @@ class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>>
if
(
oldWidget
.
id
!=
widget
.
id
)
{
_subscribeToController
();
}
if
(
widget
.
didUpdateWidget
!=
null
)
widget
.
didUpdateWidget
(
oldWidget
,
this
);
widget
.
didUpdateWidget
?.
call
(
oldWidget
,
this
);
}
@override
...
...
Please
register
or
login
to post a comment