PositionedTransition class
Animated version of Positioned which takes a specific Animation<RelativeRect> to transition the child's position from a start position to an end position over the lifetime of the animation.
Only works if it's the child of a Stack.
Here's an illustration of the PositionedTransition widget, with it's rect animated by a CurvedAnimation set to Curves.elasticInOut:
The following code implements the PositionedTransition as seen in the video
above:
To create a local project with this code sample, run:
flutter create --sample=widgets.PositionedTransition.1 mysample
flutter create --sample=widgets.PositionedTransition.1 mysample
The following code implements the PositionedTransition as seen in the video
above:
AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
)..repeat(reverse: true);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final double smallLogo = 100;
final double bigLogo = 200;
return LayoutBuilder(
builder: (context, constraints) {
final Size biggest = constraints.biggest;
return Stack(
children: [
PositionedTransition(
rect: RelativeRectTween(
begin: RelativeRect.fromSize(Rect.fromLTWH(0, 0, smallLogo, smallLogo), biggest),
end: RelativeRect.fromSize(Rect.fromLTWH(biggest.width - bigLogo, biggest.height - bigLogo, bigLogo, bigLogo), biggest),
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.elasticInOut,
)),
child: Padding(
padding: const EdgeInsets.all(8),
child: FlutterLogo()
),
),
],
);
},
);
}
See also:
- AnimatedPositioned, which transitions a child's position without taking an explicit Animation argument.
- RelativePositionedTransition, a widget that transitions its child's position based on the value of a rectangle relative to a bounding box.
- SlideTransition, a widget that animates the position of a widget relative to its normal position.
- AlignTransition, an animated version of an Align that animates its Align.alignment property.
- ScaleTransition, a widget that animates the scale of a transformed widget.
- SizeTransition, a widget that animates its own size and clips and aligns its child.
- Inheritance
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- AnimatedWidget
- PositionedTransition
Constructors
-
PositionedTransition({Key key,
@required Animation< RelativeRect> rect,@required Widget child} ) -
Creates a transition for Positioned. [...]
const
Properties
- child → Widget
-
The widget below this widget in the tree. [...]
final
- hashCode → int
-
The hash code for this object. [...]
@nonVirtual, read-only, inherited
- key → Key
-
Controls how one widget replaces another widget in the tree. [...]
final, inherited
- listenable → Listenable
-
The Listenable to which this widget is listening. [...]
final, inherited
-
rect
→ Animation<
RelativeRect> -
The animation that controls the child's size and position.
read-only
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
build(
BuildContext context ) → Widget -
Override this method to build widgets that depend on the state of the
listenable (e.g., the current value of the animation).
override
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
-
createState(
) → _AnimatedState -
Subclasses typically do not override this method.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children. [...]
@protected, inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties ) → void -
Add additional properties associated with the node. [...]
inherited
-
noSuchMethod(
Invocation invocation ) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
toDiagnosticsNode(
{String name, DiagnosticsTreeStyle style} ) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep. [...]
inherited
-
toString(
{DiagnosticLevel minLevel: DiagnosticLevel.info} ) → String -
Returns a string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug} ) → String -
Returns a string representation of this node and its descendants. [...]
inherited
-
toStringShallow(
{String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug} ) → String -
Returns a one-line detailed description of the object. [...]
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other ) → bool -
The equality operator. [...]
@nonVirtual, inherited