2d-inc / Flare-Flutter

Load and get full control of your Rive files in a Flutter project using this library.
https://rive.app/
MIT License
2.55k stars 469 forks source link

Please be more careful when upgrading - Build break from flare_flutter #208

Closed yjoo9317 closed 4 years ago

yjoo9317 commented 4 years ago

Hi @luigi-rosso

We'd been using flare 1.6.5 since we couldn't update flutter SDK to the latest for internal reasons and suddenly we got a build break a week ago. Apparently, the recent flare_dart upgrade (to 2.3.?, I guess) was causing the break as our build system starts fresh builds. Since the flare spec points to flare_dart ^2.2.X and our build system picked flare_dart 2.3.0 which requires additional interface implementation for actor class. If flare_dart upgrade can cause the build break, then it should be carefully delivered to avoid any possible breakage for existing flare versions. Thanks.

luigi-rosso commented 4 years ago

Hi @yjoo9317, sorry to hear about that. I think I see what happened. We revved the SDK as the library was already using features that were in the newer SDK which we weren't properly depending on in the pubspec. The right thing to do there would've been to combine that change with a major version change, which is unfortunate but I think necessary. Let me know if you have further recommendations, we definitely don't want to break builds.

Sorry about that, we'll be more careful in the future.

yjoo9317 commented 4 years ago

Thanks @luigi-rosso for quick response. We've taken care of it and don't have any problem with build. So please do what do you think is best. I just want you guys to know what happened on our end. But still, flare is great!!

thetanz-geoff commented 4 years ago

@luigi-rosso @yjoo9317 Thanks for the insight. Very timely for us!

What's the recommended workaround, please? Our pubspec.yaml contains:

  flare_flutter: 1.6.2

But flare_dart-2.3.2 is referenced during the build:

    Compiler message:
    ../../../../../../.pub-cache/hosted/pub.dartlang.org/flare_flutter-1.6.2/lib/flare.dart:659:7: Error: The non-abstract class 'FlutterActor' is missing implementations for these members:
     - Actor.makeDropShadow
     - Actor.makeInnerShadow
     - Actor.makeLayerEffectRenderer
    Try to either
     - provide an implementation,
     - inherit an implementation from a superclass or mixin,
     - mark the class as abstract, or
     - provide a 'noSuchMethod' implementation.

    class FlutterActor extends Actor {
          ^^^^^^^^^^^^
    ../../../../../../.pub-cache/hosted/pub.dartlang.org/flare_dart-2.3.2/lib/actor.dart:108:19: Context: 'Actor.makeDropShadow' is defined here.
      ActorDropShadow makeDropShadow();
                      ^^^^^^^^^^^^^^
    ../../../../../../.pub-cache/hosted/pub.dartlang.org/flare_dart-2.3.2/lib/actor.dart:110:20: Context: 'Actor.makeInnerShadow' is defined here.
      ActorInnerShadow makeInnerShadow();
                       ^^^^^^^^^^^^^^^
    ../../../../../../.pub-cache/hosted/pub.dartlang.org/flare_dart-2.3.2/lib/actor.dart:112:28: Context: 'Actor.makeLayerEffectRenderer' is defined here.
      ActorLayerEffectRenderer makeLayerEffectRenderer();
                               ^^^^^^^^^^^^^^^^^^^^^^^
    Compiler terminated unexpectedly.
yjoo9317 commented 4 years ago

@thetanz-geoff The quickest solution would be adding flare_dart : 2.2.5 BEFORE flare_flutter : 1.6.2 Do NOT add ^ While building, it will get flare dart 2.2.5 version first.

thetanz-geoff commented 4 years ago

Thanks for the speedy reply, @yjoo9317. This is indeed the approach we took. It's working for us but it's great to have affirmation!