Я создал анимацию 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';
}
},
),
),
],
),
);
}
}