keyframes_tween 0.1.1 copy "keyframes_tween: ^0.1.1" to clipboard
keyframes_tween: ^0.1.1 copied to clipboard

A tween that allow defining keyframes for various properties.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:keyframes_tween/keyframes_tween.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Keyframes Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Container(
        color: Colors.white,
        child: Center(
          child: Example(),
        ),
      ),
    );
  }
}

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> with TickerProviderStateMixin {
  late final controller = AnimationController(
    duration: const Duration(seconds: 10),
    vsync: this,
  );
  final tween = KeyframesTween([
    KeyframeProperty<Size>(
      [
        Size(10, 10).keyframe(0),
        Size(100, 100).keyframe(0.5, Curves.easeInOut),
        Size(200, 200).keyframe(1.0),
      ],
    ),
    KeyframeProperty<Matrix4>(
      [
        Matrix4.identity().keyframe(0.0),
        Matrix4.identity().keyframe(0.6),
        (Matrix4.rotationZ(4)..translate(-200.0, -100.0)).keyframe(
          1.0,
          Curves.easeInOut,
        ),
      ],
    ),
    KeyframeProperty<Color>(
      [
        Colors.black.keyframe(0.0),
        Colors.red.keyframe(0.8, Curves.easeInOut),
        Colors.blue.keyframe(1.0),
      ],
      name: 'background',
    ),
  ]);

  @override
  void initState() {
    controller.repeat(reverse: true);
    super.initState();
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return ValueListenableBuilder<KeyframeValue>(
      valueListenable: tween.animate(controller),
      builder: (context, values, _) => Container(
        transform: values<Matrix4>(),
        transformAlignment: Alignment.center,
        width: values<Size>().width,
        height: values<Size>().height,
        color: values<Color>('background'),
      ),
    );
  }
}
2
likes
130
pub points
28%
popularity

Publisher

verified publisheraloisdeniel.com

A tween that allow defining keyframes for various properties.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

equatable, flutter

More

Packages that depend on keyframes_tween