Skip to content

Commit

Permalink
fix: should not flicker
Browse files Browse the repository at this point in the history
  • Loading branch information
Tienisto committed Jun 29, 2024
1 parent c1b0772 commit 31aa3a9
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/src/rendering/local_hero_layer.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/animation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:local_hero/src/rendering/controller.dart';
import 'package:local_hero/src/rendering/layer.dart';

Expand Down Expand Up @@ -144,6 +145,16 @@ class RenderLocalHeroFollowerLayer extends RenderProxyBox {
: constraints.enforce(BoxConstraints.tight(requestedSize));
child!.layout(childConstraints, parentUsesSize: true);
size = constraints.constrain(child!.size);

if (requestedSize == null) {
// The size is not known yet, let's wait for the next frame.
// This happens e.g. when the widget is animated (e.g. flutter_animate).
// Removing "workaround" will result in a flickering effect where the
// first frame of the animation takes the full size of the LocalHeroScope.
SchedulerBinding.instance.addPostFrameCallback((_) {
markNeedsLayout();
});
}
}

@override
Expand Down

0 comments on commit 31aa3a9

Please sign in to comment.