image_test_utils.dart 1.31 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6 7 8
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';
import 'dart:ui' as ui;

import 'package:flutter/foundation.dart';
9
import 'package:flutter/painting.dart';
10 11 12 13 14 15

class TestImageProvider extends ImageProvider<TestImageProvider> {
  TestImageProvider(this.testImage);

  final ui.Image testImage;

16
  final Completer<ImageInfo> _completer = Completer<ImageInfo>.sync();
17
  ImageConfiguration? configuration;
18
  int loadCallCount = 0;
19 20 21

  @override
  Future<TestImageProvider> obtainKey(ImageConfiguration configuration) {
22
    return SynchronousFuture<TestImageProvider>(this);
23 24 25
  }

  @override
26
  void resolveStreamForKey(ImageConfiguration config, ImageStream stream, TestImageProvider key, ImageErrorListener handleError) {
27
    configuration = config;
28
    super.resolveStreamForKey(config, stream, key, handleError);
29 30 31
  }

  @override
32 33 34 35
  ImageStreamCompleter load(TestImageProvider key, DecoderCallback decode) {
    loadCallCount += 1;
    return OneFrameImageStreamCompleter(_completer.future);
  }
36 37

  ImageInfo complete() {
38
    final ImageInfo imageInfo = ImageInfo(image: testImage);
39 40 41 42 43 44 45
    _completer.complete(imageInfo);
    return imageInfo;
  }

  @override
  String toString() => '${describeIdentity(this)}()';
}