使用控制器参数flutter时Flare Actor突然消失

Posted

技术标签:

【中文标题】使用控制器参数flutter时Flare Actor突然消失【英文标题】:Flare Actor suddenly disappears when using controller parameter flutter 【发布时间】:2020-09-26 19:43:19 【问题描述】:

我尝试在我的应用程序中使用flare 来设计一个带有进度条的评分屏幕,但我遇到了一个错误“每当我尝试添加控制器参数时,flare 就会突然消失”并出现错误。

getter 'duration' 在 null 上被调用。

接收者:空

尝试调用:持续时间

我在下面附上了所需的代码

  FlareRateController _flareController;

void updateDragPosition(Offset offset) 
    setState(() 
      _dragPercent = (offset.dx / sliderWidth).clamp(0.0, 1.0);
      _flareController.updatePercent(_dragPercent);
    );
  

void initState() 
    super.initState();
    _flareController = FlareRateController();
    SystemChrome.setEnabledSystemUIOverlays([]);
  

_buildFlareActor() => SizedBox(
        width: 1100.w,
        height: 680.h,
        child: FlareActor(
          "assets/rate.flr",
          artboard: "Artboard",
          controller: _flareController,
        ),
      );

FlareRatecontroller 类是

class FlareRateController extends FlareController 
  FlutterActorArtboard _artboard;
  ActorAnimation _rateAnimation;

  double _slidePercent = 0.0;
  double _currentSlide = 0.0;
  double _smoothTime = 5;

  void updatePercent(double val) 
    _slidePercent = val;
  

  @override
  void initialize(FlutterActorArtboard artboard) 
    if (artboard.name.compareTo("Artboard") == 0) 
      _artboard = artboard;
      _rateAnimation = artboard.getAnimation("Slide");
    
  

  @override
  bool advance(FlutterActorArtboard artboard, double elapsed) 
    if (artboard.name.compareTo("Artboard") == 0) 
      _currentSlide += (_slidePercent - _currentSlide) *
          math.min(
            1,
            elapsed * _smoothTime,
          );
      _rateAnimation.apply(
          _currentSlide * _rateAnimation.duration, artboard, 1); //error here in duration
    
    return true;
  

  @override
  void setViewTransform(Mat2D viewTransform) 
    // TODO: implement setViewTransform
  

错误在 _rateAnimation.duration 中(已经评论过谎言)

【问题讨论】:

【参考方案1】:

你的 Flare Actor 消失了,因为属性“duration”返回 null

我找到了这个速率应用程序速度代码并复制,因为我需要有关代码的更多信息。这就是我发现的:

您的代码正在为您的 ActorAnimation 获取动画,例如“Slide”。尝试更改“Slide”参数并设置“slide”(s 小写)

然后再次运行您的应用程序并告诉我您是否得到它。

【讨论】:

以上是关于使用控制器参数flutter时Flare Actor突然消失的主要内容,如果未能解决你的问题,请参考以下文章

Flare Flutter 动画问题

在 Flutter 中重放相同的 Flare 动画

Flutter(Flare) 最有趣用户交互动画没有之一

Flutter Flare, Rive,它可以用作背景吗?

Flutter Flare 动画无法正常工作

Flutter 专题51 图解动画小插曲之 Flare 动画 #yyds干货盘点#