美文网首页
flutter动画

flutter动画

作者: 淹死丶的鱼 | 来源:发表于2019-03-27 12:41 被阅读0次
动画

效果图:


1553662782051.gif

flutter中,动画可以当成一个时间内对应值的变化刷新Widget来达到动画的效果类似Android的AnimationValue,需要继承StatefulWidget来使用,在初始化方法中创建动画控制器,在initState中初始化动画控制器

AnimationController _controller;
   _controller = AnimationController(
      vsync: this, //
      lowerBound: 0.0, ///初始值
      upperBound: 1.0, ///结束值
      duration: Duration(seconds: 3),

添加动画监听

_controller
      ..addStatusListener((anim) {
        print(anim.toString());
      })
      ..addListener(() {
        setState(() {});
      });
_controller.forward();//启动动画

赋值

color: Colors.blue,
width: _controller.value*300,//上面是0.0-1.0 此处*300
height: _controller.value*300,

但是这样刷新是整个见面都刷新,这跟我们要求的有些出入,我们要求只是单个widget刷新,这是我们可以把需要执行的动画widget剥离出来写成一个单独的widget也可以借助flutter sdk内置的一个类AnimatedBuilder()来实现动画
如果是颜色变化的话可以借助

    ColorTween color =
    ColorTween(begin: Colors.blue, end: Colors.red);
    animate = color.animate(_controller);
AnimatedBuilder(
              animation: _controller,
              builder: (context, child) {
                return Container(
                  child: Text(
                    "动画",
                  ),
                  color: animate.value,
                  width: animation.value * 300,
                  height: animation.value * 300,
                );
              }),

如果类中有Controller的对象在销毁的时候需要调用dispose方法

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

下面是全部代码

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage>
    with SingleTickerProviderStateMixin {
  AnimationController _controller;
  Animation<Color> animate;
  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      vsync: this, //
      lowerBound: 0.0, ///初始值
      upperBound: 1.0, ///结束值
      duration: Duration(seconds: 3),
    );
    _controller
      ..addStatusListener((anim) {
        print(anim.toString());
      })
      ..addListener(() {
        setState(() {});
      });
    ColorTween color =
    ColorTween(begin: Colors.blue, end: Colors.red);
    animate = color.animate(_controller);
    _controller.forward();
  }
  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Container(
          child: Center(
            child: Text("动画"),
          ),
          color: animate.value,
          width: _controller.value*300,
          height: _controller.value*300,
        ),
      ),
    );
  }
}

```![1553662782051.gif](https://img.haomeiwen.com/i14297452/55dd4e351e92d13f.gif?imageMogr2/auto-orient/strip)

相关文章

  • Flutter 动画效果

    在动画方面 Flutter 提供了 Animation 类提供使用。 动画 Flutter 中创建动画,请创建名为...

  • Flutter动画animation

    参考 动画 flutter中动画抽象 划重点 Flutter 中的动画系统基于Animation对象,widget...

  • Flutter中的动画

    Flutter中的动画 Flutter中的动画 https://flutterchina.club/tutoria...

  • Flutter从入门到写出完整App Day12

    20.3.27 Flutter实现动画 Flutter有自己的渲染闭环 一. 动画API认识 1. Animati...

  • Flutter轮播图

    前端开发当中最有意思的就是实现动画特效,Flutter提供的各种动画组件可以方便实现各种动画效果。Flutter中...

  • 深入理解Flutter动画原理

    基于Flutter 1.5,从源码视角来深入剖析flutter动画原理,相关源码目录见文末附录 一、概述 动画效果...

  • Flutter动画: Animation动画基础(一)

    我的博客 要使用Flutter中动画, 首先要熟悉Flutter的动画基础概念和相关类。 Animation:Fl...

  • Flutter - 创建拍手动画

    在本文中,我们将从头开始探索Flutter动画。我们将通过在Flutter中创建拍手动画的模型来学习关于动画的一些...

  • Flutter开发之帧动画

    最近写了一些flutter的小动画,在这里也写几个篇章介绍下flutter的动画的实现,先实现个简单的帧动画,举例...

  • Flutter:一个简单的动画实现原理浅析

    Flutter 动画 本文主要介绍 Flutter 动画相关的内容,对相关的知识点进行了梳理,并从实际例子出发,进...

网友评论

      本文标题:flutter动画

      本文链接:https://www.haomeiwen.com/subject/tkczvqtx.html