0

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

在 null 上调用了 getter 'duration'。

接收方:空

尝试调用:持续时间

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

  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 中(已经评论了谎言)

4

1 回答 1

1

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

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

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

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

于 2020-06-18T02:35:00.360 回答