我创建了一个 Flare 动画,它只是 Flutter 应用程序中的一个订阅/取消订阅按钮。
按下按钮时动画会运行,并且一切看起来都很好,例如,如果用户订阅了,则在用户按下按钮后按钮会显示为“已订阅”。但是,如果用户已经订阅并返回到相关屏幕,则按钮不处于订阅状态。它保持原始的“订阅”状态
我正在使用 Flare 文件中的单个画板。它有两个动画,订阅和取消订阅,它们听起来像。单击按钮时动画会正确播放,但是重新加载屏幕时不会保留状态。例如,如果我已订阅,然后离开应用程序并返回,我会看到“订阅”按钮,即使我已经这样做了。
我不确定我是否需要为此设置 2 个单独的艺术板,或者是否有更好的方法?
class SubUnsubButton extends StatefulWidget {
final Fight fight;
const SubUnsubButton({
Key key,
@required this.fight,
}) : super(key: key);
@override
_SubUnsubButtonState createState() => _SubUnsubButtonState();
}
class _SubUnsubButtonState extends State<SubUnsubButton>
with TickerProviderStateMixin {
FlareControls flareController = FlareControls();
String animation;
@override
initState() {
super.initState();
widget.fight.userIsSubscribed ? animation = 'Sub' : animation = 'Unsub';
}
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Container(
height: 50,
child: FlatButton(
child: FlareActor(
"assets/animations/FightBell.flr",
artboard: "SubUnsub",
controller: flareController,
fit: BoxFit.contain,
animation: animation,
sizeFromArtboard: true,
),
onPressed: () {
// If not subsribed
FirebaseUser user = Provider.of<FirebaseUser>(context);
if (!widget.fight.userIsSubscribed) {
animation = 'Sub';
} else {
animation = 'Unsub';
}
},
),
),
],
),
);
}
}