blob: 75a24adfb5151b19635e2d00c214706d55457df3 [file] [log] [blame]
// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:path/path.dart' as path;
/// Precaches the images in the `assets` folder. This method must be called
/// before pumping any widgets.
Future<void> precacheTaskIcons(WidgetTester tester) async {
// Depending on how we're invoked, Platform.script.path will have extra parts
// after app_flutter. Just trim them off.
final List<String> pathParts = path.split(Platform.script.path);
while (pathParts.last != 'dashboard') {
pathParts.removeLast();
}
final String assetPath = path.joinAll(<String>[...pathParts, 'assets']);
final List<String> assets =
Directory(assetPath).listSync().map((FileSystemEntity entity) => path.basename(entity.path)).toList();
await tester.pumpWidget(const SizedBox());
await tester.runAsync(() async {
for (final String asset in assets) {
final ImageProvider provider = ExactAssetImage('assets/$asset');
await provider.evict();
await precacheImage(
provider,
tester.allElements.first,
);
}
});
}