Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 327f197

Browse files
committed
ANimatedContainer.doesnt.work
1 parent 04010c1 commit 327f197

File tree

2 files changed

+31
-41
lines changed

2 files changed

+31
-41
lines changed

sky/sdk/lib/widgets/animated_container.dart

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ class AnimatedBoxDecorationValue extends AnimatedType<BoxDecoration> {
3434
}
3535
}
3636

37+
38+
class AnimatedMatrix4 extends AnimatedType<Matrix4> {
39+
AnimatedMatrix4(Matrix4 begin, { Matrix4 end, Curve curve: linear })
40+
: super(begin, end: end, curve: curve);
41+
42+
void setFraction(double t) {
43+
if (t == 1.0) {
44+
value = end;
45+
return;
46+
}
47+
// TODO(mpcomplete): lerp the whole matrix (can we just lerp each cell?).
48+
Vector3 trans = begin.getTranslation()*(1.0 - t) + end.getTranslation() * t;
49+
value = new Matrix4.identity()..translate(trans);
50+
}
51+
}
52+
3753
class AnimatedEdgeDimsValue extends AnimatedType<EdgeDims> {
3854
AnimatedEdgeDimsValue(EdgeDims begin, { EdgeDims end, Curve curve: linear })
3955
: super(begin, end: end, curve: curve);
@@ -116,6 +132,7 @@ class AnimatedContainer extends AnimatedComponent {
116132
decoration = source.decoration;
117133
margin = source.margin;
118134
padding = source.padding;
135+
transform = source.transform;
119136
width = source.width;
120137
height = source.height;
121138
_updateFields();
@@ -167,8 +184,10 @@ class AnimatedContainer extends AnimatedComponent {
167184
}
168185

169186
void _updateTransform() {
187+
if (transform != null)
188+
print("AC transform: $transform vs $_transform");
170189
_updateField(transform, _transform, () {
171-
_transform = new ImplicitlyAnimatedValue<Matrix4>(new AnimatedType<Matrix4>(transform), duration);
190+
_transform = new ImplicitlyAnimatedValue<Matrix4>(new AnimatedMatrix4(transform), duration);
172191
watch(_transform.performance);
173192
});
174193
}

sky/sdk/lib/widgets/snack_bar.dart

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:sky/animation/animation_performance.dart';
66
import 'package:sky/painting/text_style.dart';
77
import 'package:sky/theme/typography.dart' as typography;
88
import 'package:sky/widgets/animated_component.dart';
9+
import 'package:sky/widgets/animated_container.dart';
910
import 'package:sky/widgets/basic.dart';
1011
import 'package:sky/widgets/default_text_style.dart';
1112
import 'package:sky/widgets/material.dart';
@@ -35,7 +36,7 @@ class SnackBarAction extends Component {
3536
}
3637
}
3738

38-
class SnackBar extends AnimatedComponent {
39+
class SnackBar extends Component {
3940

4041
SnackBar({
4142
String key,
@@ -52,41 +53,8 @@ class SnackBar extends AnimatedComponent {
5253
bool showing;
5354
Function onHidden;
5455

55-
void syncFields(SnackBar source) {
56-
content = source.content;
57-
actions = source.actions;
58-
onHidden = source.onHidden;
59-
if (showing != source.showing) {
60-
showing = source.showing;
61-
showing ? _show() : _hide();
62-
}
63-
}
64-
65-
AnimatedType<Point> _position;
66-
AnimationPerformance _performance;
67-
68-
void initState() {
69-
_position = new AnimatedType<Point>(new Point(0.0, 50.0), end: Point.origin);
70-
_performance = new AnimationPerformance()
71-
..duration = _kSlideInDuration
72-
..variable = _position
73-
..addListener(_checkCompleted);
74-
watch(_performance);
75-
if (showing)
76-
_show();
77-
}
78-
79-
void _show() {
80-
_performance.play();
81-
}
82-
void _hide() {
83-
_performance.reverse();
84-
}
85-
void _checkCompleted() {
86-
if (!_performance.isAnimating && _performance.isDismissed && onHidden != null) {
87-
onHidden();
88-
}
89-
}
56+
Point get _position =>
57+
showing ? Point.origin : new Point(0.0, 50.0);
9058

9159
Widget build() {
9260
List<Widget> children = [
@@ -102,10 +70,13 @@ class SnackBar extends AnimatedComponent {
10270
]..addAll(actions);
10371

10472
Matrix4 transform = new Matrix4.identity();
105-
transform.translate(_position.value.x, _position.value.y);
106-
return new Transform(
107-
transform: transform,
108-
child: new Material(
73+
transform.translate(_position.x, _position.y);
74+
print("transform: $_position");
75+
return new AnimatedContainer(
76+
director: director,
77+
transform: transform,
78+
duration: _kSlideInDuration,
79+
child: new Material(
10980
level: 2,
11081
color: const Color(0xFF323232),
11182
type: MaterialType.canvas,

0 commit comments

Comments
 (0)