gpt4 book ai didi

flutter - 动画小部件仅动画一次

转载 作者:IT王子 更新时间:2023-10-29 07:01:24 25 4
gpt4 key购买 nike

我有一个带有动画 AnimatedText 的小部件,在第一个动画之后,它似乎没有使用 setState 重建。

Widget build(BuildContext context) {
return createPage(texts[currentIndex]);
}

Widget createPage(Excerpt excerpt) {
return new Material(child: new Stack(
children: <Widget>[
createBackgroundImage(excerpt),
new Column(mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
new Flexible(flex: 6, child: new SizedBox.expand()),
new Flexible(flex: 1,
child: createHeader(excerpt)),
new Flexible(flex: 4,
child: createTextBox(excerpt))
]),
]
));
}
Widget createTextBox(Excerpt excerpt) {
return new SizedBox.expand(child: new FlatButton(
color: Colors.black,
child: new Container(
padding: new EdgeInsets.only(top: 10.0),
constraints: new BoxConstraints.expand(),
child: new AnimatedText(excerpt.text)),
onPressed: () {
setState(() {//update index});
}

AnimatedTest 类:

class AnimatedText extends StatefulWidget {
String text;

AnimatedText(this.text);

@override
AnimatedTextState createState() => new AnimatedTextState(text);
}

class AnimatedTextState extends State<AnimatedText>
with SingleTickerProviderStateMixin {
String text;
String currentText = "";
AnimationController controller;
Animation animation;
AnimatedTextState(this.text){
print(text);
}

@override
void initState() {
super.initState();
controller = new AnimationController(
upperBound: text.length.toDouble(),
duration: new Duration(seconds: 3),
vsync: this);
controller.addListener((){
setState((){
currentText = text.substring(0,controller.value.round());
});
});
controller.forward();
}

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

@override
Widget build(BuildContext context) =>
new Text(currentText, style: speakerStyle());
}

标题小部件每次都会重建,但带有动画文本的部分不会。关于如何解决此问题的任何想法都会有所帮助

最佳答案

Widget 上的字段应该是最终的。State 构造函数不应该接受参数。您应该实现 didUpdateConfig 以从新的 Widget 中获取数据以更新您的 State 的文本字段。

关于flutter - 动画小部件仅动画一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42590052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com