AnimatedWidget的子类,使用TextStyle类型的动画器让文字组件在两个TextStyle对象之间进行过渡动画。

相关组件

AnimatedDefaultTextStyle DefaultTextStyle

DefaultTextStyleTransition基本使用

  1. <br />【child】 : 孩子组件 【Widget】<br />【textAlign】 : 文字对齐方式 【TextAlign】<br />【softWrap】 : 是否包裹 【bool】<br />【maxLines】 : 最大行数 【int】<br />【overflow】 : 溢出模式 【TextOverflow】<br />【style】 : 动画 【Animation<TextStyle><br />![139.gif](https://cdn.nlark.com/yuque/0/2020/gif/326147/1589457320664-cfac037d-6d28-4375-9603-454aae147109.gif#align=left&display=inline&height=226&margin=%5Bobject%20Object%5D&name=139.gif&originHeight=226&originWidth=804&size=572382&status=done&style=none&width=804)
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class CustomDefaultTextStyleTransition extends StatefulWidget {
  @override
  _CustomDefaultTextStyleTransitionState createState() =>
      _CustomDefaultTextStyleTransitionState();
}

class _CustomDefaultTextStyleTransitionState
    extends State<CustomDefaultTextStyleTransition>
    with SingleTickerProviderStateMixin {
  AnimationController _ctrl;

  @override
  void initState() {
    _ctrl = AnimationController(vsync: this, duration: Duration(seconds: 1));
    _ctrl.forward();
    super.initState();
  }

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

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
        onTap: () {
          setState(() {
            _ctrl.reset();
            _ctrl.forward();
          });
        },
        child: Container(
          alignment: Alignment.center,
          width: 300,
          height: 100,
          child: DefaultTextStyleTransition(
            textAlign: TextAlign.start,
            softWrap: true,
            maxLines: 1,
            overflow: TextOverflow.ellipsis,
            style: TextStyleTween(
                begin: TextStyle(color: Colors.blue, fontSize: 50, shadows: [
                  Shadow(
                      offset: Offset(1, 1), color: Colors.black, blurRadius: 3)
                ]),
                end: TextStyle(color: Colors.white, fontSize: 20, shadows: [
                  Shadow(
                      offset: Offset(1, 1), color: Colors.purple, blurRadius: 3)
                ])).animate(_ctrl),
            child: Text('张风捷特烈'),
          ),
        ));
  }
}