diff --git a/packages/flutter/lib/src/scheduler/binding.dart b/packages/flutter/lib/src/scheduler/binding.dart index eb1eb762bfe..1be5607dcad 100644 --- a/packages/flutter/lib/src/scheduler/binding.dart +++ b/packages/flutter/lib/src/scheduler/binding.dart @@ -825,6 +825,7 @@ mixin SchedulerBinding on BindingBase { debugPrintStack(label: 'scheduleForcedFrame() called. Current phase is $schedulerPhase.'); return true; }()); + ensureFrameCallbacksRegistered(); platformDispatcher.scheduleFrame(); _hasScheduledFrame = true; } diff --git a/packages/flutter/test/scheduler/binding_test.dart b/packages/flutter/test/scheduler/binding_test.dart new file mode 100644 index 00000000000..d4018ff94ce --- /dev/null +++ b/packages/flutter/test/scheduler/binding_test.dart @@ -0,0 +1,16 @@ +// 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 'package:flutter/scheduler.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + + test('scheduleForcedFrame sets up frame callbacks', () async { + SchedulerBinding.instance.scheduleForcedFrame(); + expect(SchedulerBinding.instance.platformDispatcher.onBeginFrame, isNotNull); + }); +}