legacyPrimeAssets function

Future<void> legacyPrimeAssets(
  1. WidgetTester tester
)

A function that primes all assets by just wasting time and hoping that it is enough for all assets to finish loading. Doing so is not recommended and very flaky. Consider switching to defaultPrimeAssets or a custom implementation.

See also:

Implementation

Future<void> legacyPrimeAssets(WidgetTester tester) async {
  final renderObject = tester.binding.renderView;
  assert(!renderObject.debugNeedsPaint);

  /* this should work but doesn't:
  final OffsetLayer layer = renderObject.debugLayer!;
  */
  final layer = renderObject.debugLayer as OffsetLayer;

  // This is a very flaky hack which should be avoided if possible.
  // We are just trying to waste some time that matches the time needed to call matchesGoldenFile.
  // This should be enough time for most images/assets to be ready.
  await tester.runAsync<void>(() async {
    final image = await layer.toImage(renderObject.paintBounds);
    await image.toByteData(format: ImageByteFormat.png);
    await image.toByteData(format: ImageByteFormat.png);
  });
}