[英]Flutter - Error while creating a widget around Rive
為了在多個地方使用 rive,我在 Rive 小部件周圍創建了一個包裝小部件。
//imports...
class RiveAnimation extends StatefulWidget {
final String path;
final String animation;
final Alignment alignment;
final bool useArtboardSize;
RiveAnimation({
@required this.path,
this.animation = animTrigger,
this.alignment = Alignment.center,
this.useArtboardSize = true,
});
@override
_RiveAnimationState createState() => _RiveAnimationState();
}
class _RiveAnimationState extends State<RiveAnimation> {
Artboard _riveArtboard;
RiveAnimationController _controller;
@override
void initState() {
rootBundle.load(widget.path).then(
(data) async {
print('animation loaded');
final RiveFile file = RiveFile.import(data);
if (file != null) {
final Artboard artboard = file.mainArtboard;
artboard.addController(
_controller = SimpleAnimation(widget.animation),
);
setState(() {
_riveArtboard = artboard;
});
}
},
);
super.initState();
}
@override
Widget build(BuildContext context) {
return Rive(
artboard: _riveArtboard,
alignment: widget.alignment,
useArtboardSize: widget.useArtboardSize,
fit: BoxFit.fill,
);
}
}
使用此小部件時,我收到一條錯誤消息:
I/flutter ( 7139): The getter 'redraw' was called on null.
I/flutter ( 7139): Receiver: null
I/flutter ( 7139): Tried calling: redraw
有時,會顯示 Animation,但有時我會看到 Flutter 錯誤屏幕。
謝謝你。
試着打電話
super.initState();
在加載 animation 之前。
@override
void initState() {
super.initState();
rootBundle.load(widget.path).then(
(data) async {
print('animation loaded');
final RiveFile file = RiveFile.import(data);
if (file != null) {
final Artboard artboard = file.mainArtboard;
artboard.addController(
_controller = SimpleAnimation(widget.animation),
);
setState(() {
_riveArtboard = artboard;
});
}
},
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.