funvas 0.0.3+1
funvas: ^0.0.3+1
funvas: ^0.1.0-nullsafety.0

Flutter Android iOS web

Package for creating canvas animations based on time and math functions. Fun + canvas -> funvas :)

funvas GitHub stars Pub version Twitter Follow #

Flutter package that allows creating canvas animations based on time and math functions.

The name "funvas" is based on Flutter + fun + canvas. Let me know if you have any better ideas :)

Concept #

The idea of the package is to provide an easy way to create custom canvas animations based only on time and some math functions (sine, cosine, etc.) - like this one.

Inspired by Dwitter (check it out). This is also the reason why the following shortcut functions and variables are available; they might be expanded upon in the future given that there are a lot more possibilities:

u(t) is called 60 times per second.
    t: Elapsed time in seconds.
    S: Shorthand for sin from dart:math.
    C: Shorthand for cos from dart:math.
    T: Shorthand for tan from dart:math.
    R: Shorthand for Color.fromRGBA, usage ex.: R(255, 255, 255, 0.5)
    c: A dart:ui canvas.
    x: A context for the canvas, providing size.

You can of course use all of the Canvas functionality, the same way you can use them in a CustomPainter; the above is just in homage to Dwitter :)

Usage #

You create funvas animations by extending Funvas and you can display the animations using a [FunvasContainer]. Note that you have to size the animation from outside, e.g. using a [SizedBox].

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

/// Example implementation of a funvas.
///
/// The animation is drawn in [u] based on [t] in seconds.
class ExampleFunvas extends Funvas {
  @override
  void u(double t) {
    c.drawCircle(
      Offset(x.width / 2, x.height / 2),
      S(t).abs() * x.height / 4 + 42,
      Paint()..color = R(C(t) * 255, 42, 60 + T(t)),
    );
  }
}

/// Example widget that displays the [ExampleFunvas] animation.
class ExampleFunvasWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      width: 420,
      height: 420,
      child: FunvasContainer(
        funvas: ExampleFunvas(),
      ),
    );
  }
}

See the example package for a complete example implementation.

Exporting animations #

In the example package, there is also an exporter that can be used to export funvas animations directly to GIF. See the example/README.md file for an explanation.

3
likes
110
pub points
34%
popularity

Package for creating canvas animations based on time and math functions. Fun + canvas -> funvas :)

Repository (GitHub)
View/report issues

Documentation

API reference

Uploader

creativecreatorormaybenot@gmail.com

License

BSD (LICENSE)

Dependencies

flutter, meta

More

Packages that depend on funvas