Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
48142d68
Commit
48142d68
authored
Oct 05, 2015
by
Ian Hickson
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1490 from Hixie/navigator-ensure-pop
Handle a route being dismissed before being popped
parents
4913c4fc
290ed842
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
5 deletions
+15
-5
navigator.dart
packages/flutter/lib/src/widgets/navigator.dart
+15
-5
No files found.
packages/flutter/lib/src/widgets/navigator.dart
View file @
48142d68
...
...
@@ -136,8 +136,13 @@ class NavigatorState extends State<Navigator> {
direction:
(
i
<=
_currentPosition
)
?
AnimationDirection
.
forward
:
AnimationDirection
.
reverse
);
route
.
_onDismissed
=
()
{
assert
(
_history
.
contains
(
route
));
if
(
_history
.
lastIndexOf
(
route
)
<=
_currentPosition
)
popRoute
(
route
);
};
route
.
_onRemoveRoute
=
()
{
assert
(
_history
.
contains
(
route
));
setState
(()
{
assert
(
_history
.
contains
(
route
));
_history
.
remove
(
route
);
});
};
...
...
@@ -170,14 +175,19 @@ abstract class Route {
PerformanceView
get
performance
=>
_performance
?.
view
;
Performance
_performance
;
NotificationCallback
_onDismissed
;
NotificationCallback
_onRemoveRoute
;
Performance
createPerformance
()
{
Duration
duration
=
transitionDuration
;
if
(
duration
>
Duration
.
ZERO
)
{
return
new
Performance
(
duration:
duration
)
..
addStatusListener
((
PerformanceStatus
status
)
{
if
(
status
==
PerformanceStatus
.
dismissed
&&
_onDismissed
!=
null
)
_onDismissed
();
if
(
status
==
PerformanceStatus
.
dismissed
)
{
if
(
_onDismissed
!=
null
)
_onDismissed
();
if
(
_onRemoveRoute
!=
null
)
_onRemoveRoute
();
}
});
}
return
null
;
...
...
@@ -253,8 +263,8 @@ abstract class Route {
Widget
build
(
NavigatorState
navigator
,
PerformanceView
nextRoutePerformance
);
void
didPop
([
dynamic
result
])
{
if
(
performance
==
null
&&
_on
Dismissed
!=
null
)
_on
Dismissed
();
if
(
performance
==
null
&&
_on
RemoveRoute
!=
null
)
_on
RemoveRoute
();
}
String
toString
()
=>
'
$runtimeType
()'
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment