AnimatedWidget的子类,使用TextStyle类型的动画器让文字组件在两个TextStyle对象之间进行过渡动画。
相关组件
DefaultTextStyleTransition基本使用
<br />【child】 : 孩子组件 【Widget】<br />【textAlign】 : 文字对齐方式 【TextAlign】<br />【softWrap】 : 是否包裹 【bool】<br />【maxLines】 : 最大行数 【int】<br />【overflow】 : 溢出模式 【TextOverflow】<br />【style】 : 动画 【Animation<TextStyle>】<br />
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('张风捷特烈'),
),
));
}
}