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
5cb00100
Commit
5cb00100
authored
Oct 03, 2015
by
Adam Barth
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove AnimatedSimulation
This patch folds the functionality from AnimatedSimulation into Timeline.
parent
49aba0cc
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
91 deletions
+64
-91
animation.dart
packages/flutter/lib/animation.dart
+2
-2
animation_performance.dart
...ages/flutter/lib/src/animation/animation_performance.dart
+4
-4
simulation_stepper.dart
packages/flutter/lib/src/animation/simulation_stepper.dart
+51
-22
ticker.dart
packages/flutter/lib/src/animation/ticker.dart
+4
-59
scrollable.dart
packages/flutter/lib/src/widgets/scrollable.dart
+3
-3
tabs.dart
packages/flutter/lib/src/widgets/tabs.dart
+0
-1
No files found.
packages/flutter/lib/animation.dart
View file @
5cb00100
...
@@ -7,7 +7,6 @@
...
@@ -7,7 +7,6 @@
/// This library depends only on core Dart libraries and the `newton` package.
/// This library depends only on core Dart libraries and the `newton` package.
library
animation
;
library
animation
;
export
'src/animation/animated_simulation.dart'
;
export
'src/animation/animated_value.dart'
;
export
'src/animation/animated_value.dart'
;
export
'src/animation/animation_performance.dart'
;
export
'src/animation/animation_performance.dart'
;
export
'src/animation/clamped_simulation.dart'
;
export
'src/animation/clamped_simulation.dart'
;
...
@@ -15,4 +14,5 @@ export 'src/animation/curves.dart';
...
@@ -15,4 +14,5 @@ export 'src/animation/curves.dart';
export
'src/animation/forces.dart'
;
export
'src/animation/forces.dart'
;
export
'src/animation/scheduler.dart'
;
export
'src/animation/scheduler.dart'
;
export
'src/animation/scroll_behavior.dart'
;
export
'src/animation/scroll_behavior.dart'
;
export
'src/animation/timeline.dart'
;
export
'src/animation/simulation_stepper.dart'
;
export
'src/animation/ticker.dart'
;
packages/flutter/lib/src/animation/animation_performance.dart
View file @
5cb00100
...
@@ -6,7 +6,7 @@ import 'dart:async';
...
@@ -6,7 +6,7 @@ import 'dart:async';
import
'package:sky/src/animation/animated_value.dart'
;
import
'package:sky/src/animation/animated_value.dart'
;
import
'package:sky/src/animation/forces.dart'
;
import
'package:sky/src/animation/forces.dart'
;
import
'package:sky/src/animation/
timeline
.dart'
;
import
'package:sky/src/animation/
simulation_stepper
.dart'
;
/// The status of an animation
/// The status of an animation
enum
AnimationStatus
{
enum
AnimationStatus
{
...
@@ -53,7 +53,7 @@ abstract class WatchableAnimationPerformance {
...
@@ -53,7 +53,7 @@ abstract class WatchableAnimationPerformance {
/// progression.
/// progression.
class
AnimationPerformance
implements
WatchableAnimationPerformance
{
class
AnimationPerformance
implements
WatchableAnimationPerformance
{
AnimationPerformance
({
this
.
duration
,
double
progress
})
{
AnimationPerformance
({
this
.
duration
,
double
progress
})
{
_timeline
=
new
Timeline
(
_tick
);
_timeline
=
new
SimulationStepper
(
_tick
);
if
(
progress
!=
null
)
if
(
progress
!=
null
)
_timeline
.
value
=
progress
.
clamp
(
0.0
,
1.0
);
_timeline
.
value
=
progress
.
clamp
(
0.0
,
1.0
);
}
}
...
@@ -66,7 +66,7 @@ class AnimationPerformance implements WatchableAnimationPerformance {
...
@@ -66,7 +66,7 @@ class AnimationPerformance implements WatchableAnimationPerformance {
/// The length of time this performance should last
/// The length of time this performance should last
Duration
duration
;
Duration
duration
;
Timeline
_timeline
;
SimulationStepper
_timeline
;
Direction
_direction
;
Direction
_direction
;
/// The direction used to select the current curve
/// The direction used to select the current curve
...
@@ -159,7 +159,7 @@ class AnimationPerformance implements WatchableAnimationPerformance {
...
@@ -159,7 +159,7 @@ class AnimationPerformance implements WatchableAnimationPerformance {
if
(
force
==
null
)
if
(
force
==
null
)
force
=
kDefaultSpringForce
;
force
=
kDefaultSpringForce
;
_direction
=
velocity
<
0.0
?
Direction
.
reverse
:
Direction
.
forward
;
_direction
=
velocity
<
0.0
?
Direction
.
reverse
:
Direction
.
forward
;
return
_timeline
.
fling
(
force
.
release
(
progress
,
velocity
));
return
_timeline
.
animateWith
(
force
.
release
(
progress
,
velocity
));
}
}
final
List
<
AnimationPerformanceListener
>
_listeners
=
new
List
<
AnimationPerformanceListener
>();
final
List
<
AnimationPerformanceListener
>
_listeners
=
new
List
<
AnimationPerformanceListener
>();
...
...
packages/flutter/lib/src/animation/
timeline
.dart
→
packages/flutter/lib/src/animation/
simulation_stepper
.dart
View file @
5cb00100
...
@@ -5,23 +5,26 @@
...
@@ -5,23 +5,26 @@
import
'dart:async'
;
import
'dart:async'
;
import
'package:newton/newton.dart'
;
import
'package:newton/newton.dart'
;
import
'package:sky/src/animation/curves.dart'
;
import
'package:sky/src/animation/animated_value.dart'
;
import
'package:sky/src/animation/animated_value.dart'
;
import
'package:sky/src/animation/animated_simulation.dart'
;
import
'package:sky/src/animation/curves.dart'
;
import
'package:sky/src/animation/ticker.dart'
;
/// A simulation that linearly varies from [begin] to [end] over [duration]
/// A simulation that varies from [begin] to [end] over [duration] using [curve]
///
/// This class is an adaptor between the Simulation interface and the
/// AnimatedValue interface.
class
_TweenSimulation
extends
Simulation
{
class
_TweenSimulation
extends
Simulation
{
final
double
_durationInSeconds
;
final
AnimatedValue
<
double
>
_tween
;
_TweenSimulation
(
double
begin
,
double
end
,
Duration
duration
,
Curve
curve
)
_TweenSimulation
(
double
begin
,
double
end
,
Duration
duration
,
Curve
curve
)
:
_durationInSeconds
=
duration
.
inMicroseconds
/
Duration
.
MICROSECONDS_PER_SECOND
,
:
_durationInSeconds
=
duration
.
inMicroseconds
.
toDouble
()
/
Duration
.
MICROSECONDS_PER_SECOND
,
_tween
=
new
AnimatedValue
<
double
>(
begin
,
end:
end
,
curve:
curve
)
{
_tween
=
new
AnimatedValue
<
double
>(
begin
,
end:
end
,
curve:
curve
)
{
assert
(
_durationInSeconds
>
0.0
);
assert
(
_durationInSeconds
>
0.0
);
assert
(
begin
!=
null
);
assert
(
begin
!=
null
);
assert
(
end
!=
null
);
assert
(
end
!=
null
);
}
}
final
double
_durationInSeconds
;
final
AnimatedValue
<
double
>
_tween
;
double
x
(
double
timeInSeconds
)
{
double
x
(
double
timeInSeconds
)
{
assert
(
timeInSeconds
>=
0.0
);
assert
(
timeInSeconds
>=
0.0
);
final
double
t
=
(
timeInSeconds
/
_durationInSeconds
).
clamp
(
0.0
,
1.0
);
final
double
t
=
(
timeInSeconds
/
_durationInSeconds
).
clamp
(
0.0
,
1.0
);
...
@@ -34,24 +37,30 @@ class _TweenSimulation extends Simulation {
...
@@ -34,24 +37,30 @@ class _TweenSimulation extends Simulation {
bool
isDone
(
double
timeInSeconds
)
=>
timeInSeconds
>
_durationInSeconds
;
bool
isDone
(
double
timeInSeconds
)
=>
timeInSeconds
>
_durationInSeconds
;
}
}
/// A timeline for an animation
typedef
TimelineCallback
(
double
value
);
class
Timeline
{
Timeline
(
Function
onTick
)
{
/// Steps a simulation one per frame
_animation
=
new
AnimatedSimulation
(
onTick
);
class
SimulationStepper
{
SimulationStepper
(
TimelineCallback
onTick
)
:
_onTick
=
onTick
{
_ticker
=
new
Ticker
(
_tick
);
}
}
AnimatedSimulation
_animation
;
final
TimelineCallback
_onTick
;
Ticker
_ticker
;
Simulation
_simulation
;
/// The current value of the timeline
/// The current value of the timeline
double
get
value
=>
_animation
.
value
;
double
get
value
=>
_value
;
double
_value
=
0.0
;
void
set
value
(
double
newValue
)
{
void
set
value
(
double
newValue
)
{
assert
(
newValue
!=
null
);
assert
(
newValue
!=
null
);
assert
(!
isAnimating
);
assert
(!
isAnimating
);
_animation
.
value
=
newValue
;
_value
=
newValue
;
_onTick
(
_value
);
}
}
/// Whether the timeline is currently animating
/// Whether the timeline is currently animating
bool
get
isAnimating
=>
_
animation
.
isAnimat
ing
;
bool
get
isAnimating
=>
_
ticker
.
isTick
ing
;
/// Animate value of the timeline to the given target over the given duration
/// Animate value of the timeline to the given target over the given duration
///
///
...
@@ -59,18 +68,38 @@ class Timeline {
...
@@ -59,18 +68,38 @@ class Timeline {
/// typically when the timeline arives at the target value.
/// typically when the timeline arives at the target value.
Future
animateTo
(
double
target
,
{
Duration
duration
,
Curve
curve:
linear
})
{
Future
animateTo
(
double
target
,
{
Duration
duration
,
Curve
curve:
linear
})
{
assert
(
duration
>
Duration
.
ZERO
);
assert
(
duration
>
Duration
.
ZERO
);
assert
(!
_animation
.
isAnimating
);
assert
(!
isAnimating
);
return
_animation
.
start
(
new
_TweenSimulation
(
value
,
target
,
duration
,
curve
));
return
_start
(
new
_TweenSimulation
(
value
,
target
,
duration
,
curve
));
}
/// Gives the given simulation control over the timeline
Future
animateWith
(
Simulation
simulation
)
{
stop
();
return
_start
(
simulation
);
}
/// Start ticking the given simulation once per frame
///
/// Returns a future that resolves when the simulation stops ticking.
Future
_start
(
Simulation
simulation
)
{
assert
(
simulation
!=
null
);
assert
(!
isAnimating
);
_simulation
=
simulation
;
_value
=
simulation
.
x
(
0.0
);
return
_ticker
.
start
();
}
}
/// Stop animating the timeline
/// Stop animating the timeline
void
stop
()
{
void
stop
()
{
_animation
.
stop
();
_simulation
=
null
;
_ticker
.
stop
();
}
}
/// Gives the given simulation control over the timeline
void
_tick
(
Duration
elapsed
)
{
Future
fling
(
Simulation
simulation
)
{
double
elapsedInSeconds
=
elapsed
.
inMicroseconds
.
toDouble
()
/
Duration
.
MICROSECONDS_PER_SECOND
;
stop
();
_value
=
_simulation
.
x
(
elapsedInSeconds
);
return
_animation
.
start
(
simulation
);
if
(
_simulation
.
isDone
(
elapsedInSeconds
))
stop
();
_onTick
(
_value
);
}
}
}
}
packages/flutter/lib/src/animation/
animated_simulation
.dart
→
packages/flutter/lib/src/animation/
ticker
.dart
View file @
5cb00100
...
@@ -4,17 +4,16 @@
...
@@ -4,17 +4,16 @@
import
'dart:async'
;
import
'dart:async'
;
import
'package:newton/newton.dart'
;
import
'package:sky/src/animation/scheduler.dart'
;
import
'package:sky/src/animation/scheduler.dart'
;
typedef
_
TickerCallback
(
Duration
elapsed
);
typedef
TickerCallback
(
Duration
elapsed
);
/// Calls its callback once per animation frame
/// Calls its callback once per animation frame
class
Ticker
{
class
Ticker
{
/// Constructs a ticker that will call onTick once per frame while running
/// Constructs a ticker that will call onTick once per frame while running
Ticker
(
_
TickerCallback
onTick
)
:
_onTick
=
onTick
;
Ticker
(
TickerCallback
onTick
)
:
_onTick
=
onTick
;
final
_
TickerCallback
_onTick
;
final
TickerCallback
_onTick
;
Completer
_completer
;
Completer
_completer
;
int
_animationId
;
int
_animationId
;
...
@@ -45,7 +44,7 @@ class Ticker {
...
@@ -45,7 +44,7 @@ class Ticker {
_animationId
=
null
;
_animationId
=
null
;
}
}
// We take the _completer into a local variable so that
!isTicking
// We take the _completer into a local variable so that
isTicking is false
// when we actually complete the future (isTicking uses _completer
// when we actually complete the future (isTicking uses _completer
// to determine its state).
// to determine its state).
Completer
localCompleter
=
_completer
;
Completer
localCompleter
=
_completer
;
...
@@ -78,57 +77,3 @@ class Ticker {
...
@@ -78,57 +77,3 @@ class Ticker {
_animationId
=
scheduler
.
requestAnimationFrame
(
_tick
);
_animationId
=
scheduler
.
requestAnimationFrame
(
_tick
);
}
}
}
}
/// Ticks a simulation once per frame
class
AnimatedSimulation
{
AnimatedSimulation
(
Function
onTick
)
:
_onTick
=
onTick
{
_ticker
=
new
Ticker
(
_tick
);
}
final
Function
_onTick
;
Ticker
_ticker
;
Simulation
_simulation
;
double
_value
=
0.0
;
/// The current value of the simulation
double
get
value
=>
_value
;
void
set
value
(
double
newValue
)
{
assert
(!
_ticker
.
isTicking
);
_value
=
newValue
;
_onTick
(
_value
);
}
/// Start ticking the given simulation once per frame
///
/// Returns a future that resolves when the simulation stops ticking.
Future
start
(
Simulation
simulation
)
{
assert
(
simulation
!=
null
);
assert
(!
_ticker
.
isTicking
);
_simulation
=
simulation
;
_value
=
simulation
.
x
(
0.0
);
return
_ticker
.
start
();
}
/// Stop ticking the current simulation
void
stop
()
{
_simulation
=
null
;
_ticker
.
stop
();
}
/// Whether this object is currently ticking a simulation
bool
get
isAnimating
=>
_ticker
.
isTicking
;
void
_tick
(
Duration
elapsed
)
{
double
elapsedInSeconds
=
elapsed
.
inMicroseconds
.
toDouble
()
/
Duration
.
MICROSECONDS_PER_SECOND
;
_value
=
_simulation
.
x
(
elapsedInSeconds
);
if
(
_simulation
.
isDone
(
elapsedInSeconds
))
stop
();
_onTick
(
_value
);
}
}
packages/flutter/lib/src/widgets/scrollable.dart
View file @
5cb00100
...
@@ -51,10 +51,10 @@ abstract class ScrollableState<T extends Scrollable> extends State<T> {
...
@@ -51,10 +51,10 @@ abstract class ScrollableState<T extends Scrollable> extends State<T> {
super
.
initState
();
super
.
initState
();
if
(
config
.
initialScrollOffset
is
double
)
if
(
config
.
initialScrollOffset
is
double
)
_scrollOffset
=
config
.
initialScrollOffset
;
_scrollOffset
=
config
.
initialScrollOffset
;
_animation
=
new
Timeline
(
_setScrollOffset
);
_animation
=
new
SimulationStepper
(
_setScrollOffset
);
}
}
Timeline
_animation
;
SimulationStepper
_animation
;
double
_scrollOffset
=
0.0
;
double
_scrollOffset
=
0.0
;
double
get
scrollOffset
=>
_scrollOffset
;
double
get
scrollOffset
=>
_scrollOffset
;
...
@@ -151,7 +151,7 @@ abstract class ScrollableState<T extends Scrollable> extends State<T> {
...
@@ -151,7 +151,7 @@ abstract class ScrollableState<T extends Scrollable> extends State<T> {
_createSnapSimulation
(
velocity
)
??
_createFlingSimulation
(
velocity
??
0.0
);
_createSnapSimulation
(
velocity
)
??
_createFlingSimulation
(
velocity
??
0.0
);
if
(
simulation
==
null
)
if
(
simulation
==
null
)
return
new
Future
.
value
();
return
new
Future
.
value
();
return
_animation
.
fling
(
simulation
);
return
_animation
.
animateWith
(
simulation
);
}
}
void
dispose
()
{
void
dispose
()
{
...
...
packages/flutter/lib/src/widgets/tabs.dart
View file @
5cb00100
...
@@ -13,7 +13,6 @@ import 'package:sky/painting.dart';
...
@@ -13,7 +13,6 @@ import 'package:sky/painting.dart';
import
'package:sky/rendering.dart'
;
import
'package:sky/rendering.dart'
;
import
'package:sky/src/widgets/basic.dart'
;
import
'package:sky/src/widgets/basic.dart'
;
import
'package:sky/src/widgets/framework.dart'
;
import
'package:sky/src/widgets/framework.dart'
;
import
'package:sky/src/widgets/gesture_detector.dart'
;
import
'package:sky/src/widgets/icon.dart'
;
import
'package:sky/src/widgets/icon.dart'
;
import
'package:sky/src/widgets/ink_well.dart'
;
import
'package:sky/src/widgets/ink_well.dart'
;
import
'package:sky/src/widgets/scrollable.dart'
;
import
'package:sky/src/widgets/scrollable.dart'
;
...
...
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