| // Copyright 2014 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:async'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:flutter_driver/driver_extension.dart'; | |
| import 'package:macrobenchmarks/src/animated_image.dart'; | |
| /// This test is slightly different than most of the other tests in this | |
| /// application, in that it directly instantiates the page we care about and | |
| /// passes a callback. This way, we can make sure to consistently wait for a | |
| /// set number of image frames to render. | |
| Future<void> main() async { | |
| final waiter = Completer<void>(); | |
| enableFlutterDriverExtension( | |
| handler: (String? request) async { | |
| if (request != 'waitForAnimation') { | |
| throw UnsupportedError('Unrecognized request $request'); | |
| } | |
| await waiter.future; | |
| return 'done'; | |
| }, | |
| ); | |
| runApp( | |
| MaterialApp( | |
| home: AnimatedImagePage( | |
| onFrame: (int frameNumber) { | |
| if (frameNumber == 250) { | |
| waiter.complete(); | |
| } | |
| }, | |
| ), | |
| ), | |
| ); | |
| } |