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
dd136c49
Commit
dd136c49
authored
Oct 22, 2015
by
Ian Hickson
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1741 from Hixie/heroes
Unmatched heroes don't need to animate
parents
9ea722d9
5c439f2b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
1 deletion
+16
-1
heroes.dart
packages/flutter/lib/src/widgets/heroes.dart
+16
-1
No files found.
packages/flutter/lib/src/widgets/heroes.dart
View file @
dd136c49
...
...
@@ -70,6 +70,7 @@ class _HeroManifest {
}
abstract
class
HeroHandle
{
bool
get
alwaysAnimate
;
_HeroManifest
_takeChild
(
Rect
animationArea
);
}
...
...
@@ -78,7 +79,8 @@ class Hero extends StatefulComponent {
Key
key
,
this
.
tag
,
this
.
child
,
this
.
turns
:
1
this
.
turns
:
1
,
this
.
alwaysAnimate
:
false
})
:
super
(
key:
key
)
{
assert
(
tag
!=
null
);
}
...
...
@@ -87,6 +89,12 @@ class Hero extends StatefulComponent {
final
Widget
child
;
final
int
turns
;
/// If true, the hero will always animate, even if it has no matching hero to
/// animate to or from. (This only applies if the hero is relevant; if there
/// are multiple heroes with the same tag, only the one whose key matches the
/// "most valuable keys" will be used.)
final
bool
alwaysAnimate
;
static
Map
<
Object
,
HeroHandle
>
of
(
BuildContext
context
,
Set
<
Key
>
mostValuableKeys
)
{
mostValuableKeys
??=
new
Set
<
Key
>();
assert
(!
mostValuableKeys
.
contains
(
null
));
...
...
@@ -143,6 +151,8 @@ class HeroState extends State<Hero> implements HeroHandle {
_HeroMode
_mode
=
_HeroMode
.
constructing
;
Size
_size
;
bool
get
alwaysAnimate
=>
config
.
alwaysAnimate
;
_HeroManifest
_takeChild
(
Rect
animationArea
)
{
assert
(
_mode
==
_HeroMode
.
measured
||
_mode
==
_HeroMode
.
taken
);
final
RenderBox
renderObject
=
context
.
findRenderObject
();
...
...
@@ -235,6 +245,8 @@ class _HeroQuestState implements HeroHandle {
final
AnimatedRelativeRectValue
currentRect
;
final
AnimatedValue
<
double
>
currentTurns
;
bool
get
alwaysAnimate
=>
true
;
bool
get
taken
=>
_taken
;
bool
_taken
=
false
;
_HeroManifest
_takeChild
(
Rect
animationArea
)
{
...
...
@@ -319,6 +331,9 @@ class HeroParty {
final
List
<
_HeroQuestState
>
_newHeroes
=
<
_HeroQuestState
>[];
for
(
_HeroMatch
heroPair
in
heroes
.
values
)
{
assert
(
heroPair
.
from
!=
null
||
heroPair
.
to
!=
null
);
if
((
heroPair
.
from
==
null
&&
!
heroPair
.
to
.
alwaysAnimate
)
||
(
heroPair
.
to
==
null
&&
!
heroPair
.
from
.
alwaysAnimate
))
continue
;
_HeroManifest
from
=
heroPair
.
from
?.
_takeChild
(
animationArea
);
assert
(
heroPair
.
to
==
null
||
heroPair
.
to
is
HeroState
);
_HeroManifest
to
=
heroPair
.
to
?.
_takeChild
(
animationArea
);
...
...
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