animated_flex 0.0.1 copy "animated_flex: ^0.0.1" to clipboard
animated_flex: ^0.0.1 copied to clipboard

Flutter animation flex.

example/lib/main.dart

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

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<Widget> list = [Demo1(), Demo2(), Demo3(), Demo4()];

  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: list.length,
      child: Scaffold(
        appBar: AppBar(
          title: Text('Animated flex'),
          bottom: TabBar(
            tabs: [
              const Text('Demo1'),
              const Text('Demo2'),
              const Text('Demo3'),
              const Text('Demo4'),
            ],
          ),
        ),
        body: TabBarView(
          children: [for (Widget widget in list) widget],
        ),
      ),
    );
  }
}

class Demo1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Padding(
        padding: EdgeInsets.all(20),
        child: AnimatedFlex(
          children: [
            Container(
              color: Colors.red,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.green,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.blue,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
          ],
        ),
      ),
    );
  }
}

class Demo2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Padding(
        padding: EdgeInsets.all(20),
        child: AnimatedFlex(
          animationWidgetBuilder: (Animation animation, Widget child) {
            return Opacity(
              opacity: animation.value,
              child: Transform(
                transform: Matrix4.translationValues(
                    20 * (1.0 - animation.value),
                    20 * (1.0 - animation.value),
                    0.0),
                child: child,
              ),
            );
          },
          children: [
            Container(
              color: Colors.red,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.green,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.blue,
              height: 200,
              margin: EdgeInsets.only(top: 20),
            ),
          ],
        ),
      ),
    );
  }
}

class Demo3 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Padding(
        padding: EdgeInsets.all(20),
        child: Column(
          children: [
            SizedBox(
              height: 100,
              child: AnimatedFlex(
                animationWidgetBuilder: (Animation animation, Widget child) {
                  return Opacity(
                    opacity: animation.value,
                    child: Transform(
                      transform: Matrix4.translationValues(
                          20 * (1.0 - animation.value), 0, 0.0),
                      child: child,
                    ),
                  );
                },
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                direction: Axis.horizontal,
                children: [
                  Container(
                    color: Colors.red,
                    height: 100,
                    width: 100,
                  ),
                  Container(
                    color: Colors.green,
                    height: 100,
                    width: 100,
                  ),
                  Container(
                    color: Colors.blue,
                    height: 100,
                    width: 100,
                  ),
                ],
              ),
            ),
            SizedBox(
              height: 400,
              child: AnimatedFlex(
                delayed: Duration(milliseconds: 1000),
                animationWidgetBuilder: (Animation animation, Widget child) {
                  return Opacity(
                    opacity: animation.value,
                    child: Transform(
                      transform: Matrix4.translationValues(
                          20 * (1.0 - animation.value),
                          20 * (1.0 - animation.value),
                          0.0),
                      child: child,
                    ),
                  );
                },
                children: [
                  Container(
                    color: Colors.red,
                    height: 100,
                    margin: EdgeInsets.only(top: 20),
                  ),
                  Container(
                    color: Colors.green,
                    height: 100,
                    margin: EdgeInsets.only(top: 20),
                  ),
                  Expanded(
                    child: Container(
                      color: Colors.blue,
                      // height: 100,
                      margin: EdgeInsets.only(top: 20),
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class Demo4 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Padding(
        padding: EdgeInsets.all(20),
        child: AnimatedFlex(
          animationWidgetBuilder: (Animation animation, Widget child) {
            return Opacity(
              opacity: animation.value,
              child: Transform.scale(
                  scale: 0.8 + animation.value * .2,
                  child: child),
            );
          },
          children: [
            Container(
              color: Colors.red,
              height: 150,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.green,
              height: 150,
              margin: EdgeInsets.only(top: 20),
            ),
            Container(
              color: Colors.blue,
              height: 150,
              margin: EdgeInsets.only(top: 20),
            ),
          ],
        ),
      ),
    );
  }
}
2
likes
30
points
36
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter animation flex.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on animated_flex