TestWidgetsFlutterBinding class abstract

Base class for bindings used by widgets library tests.

The ensureInitialized method creates (if necessary) and returns an instance of the appropriate subclass. (If one is already created, it returns that one, even if it's not the one that it would normally create. This allows tests to force the use of LiveTestWidgetsFlutterBinding even in a normal unit test environment, e.g. to test that binding.)

When using these bindings, certain features are disabled. For example, timeDilation is reset to 1.0 on initialization.

In non-browser tests, the binding overrides HttpClient creation with a fake client that always returns a status code of 400. This is to prevent tests from making network calls, which could introduce flakiness. A test that actually needs to make a network call should provide its own HttpClient to the code making the call, so that it can appropriately mock or fake responses.

Coordinate spaces

TestWidgetsFlutterBinding might be run on devices of different screen sizes, while the testing widget is still told the same size to ensure consistent results. Consequently, code that deals with positions (such as pointer events or painting) must distinguish between two coordinate spaces:

  • The local coordinate space is the one used by the testing widget (typically an 800 by 600 window, but can be altered by setSurfaceSize).
  • The global coordinate space is the one used by the device.

Positions can be transformed between coordinate spaces with localToGlobal and globalToLocal.

Mixed in types


Constructor for TestWidgetsFlutterBinding.


accessibilityFeatures AccessibilityFeatures
The currently active set of AccessibilityFeatures.
buildOwner BuildOwner?
The BuildOwner in charge of executing the build pipeline for the widget tree rooted at this binding.
channelBuffers ChannelBuffers
The low level buffering and dispatch mechanism for messages sent by plugins on the engine side to their corresponding plugin code on the framework side.
clock Clock
The current time.
currentFrameTimeStamp Duration
The time stamp for the frame currently being processed.
currentSystemFrameTimeStamp Duration
The raw time stamp as provided by the engine to dart:ui.PlatformDispatcher.onBeginFrame for the frame currently being processed.
debugBuildingDirtyElements bool
Whether we are currently in a frame. This is used to verify that frames are not scheduled redundantly.
read / writeinherited
debugDidSendFirstFrameEvent bool
Whether the first frame has finished building.
debugOutstandingSemanticsHandles int
The number of clients registered to listen for semantics.
debugPrintOverride DebugPrintCallback
The value to set debugPrint to while tests are running.
debugSamplingClock SamplingClock?
Overrides the sampling clock for debugging and testing.
defaultBinaryMessenger TestDefaultBinaryMessenger
The default instance of BinaryMessenger.
defaultTestTimeout Timeout
The default test timeout for tests when using this binding.
disableAnimations bool
The platform is requesting that animations be disabled or simplified.
disableShadows bool
The value to set debugDisableShadows to while tests are running.
endOfFrame Future<void>
Returns a Future that completes after the frame completes.
firstFrameRasterized bool
Whether the Flutter engine has rasterized the first frame.
focusedEditable EditableTextState?
The State of the current EditableText client of the onscreen keyboard.
read / write
focusManager FocusManager
The object in charge of the focus tree.
framesEnabled bool
Whether frames are currently being scheduled when scheduleFrame is called.
gestureArena GestureArenaManager
The gesture arenas used for disambiguating the meaning of sequences of pointer events.
hashCode int
The hash code for this object.
hasScheduledFrame bool
Whether this scheduler has requested that handleBeginFrame be called soon.
imageCache ImageCache
The singleton that implements the Flutter framework's image cache.
inTest bool
Whether there is currently a test executing.
isRootWidgetAttached bool
Whether the rootElement has been initialized.
keyboard HardwareKeyboard
The global singleton instance of HardwareKeyboard, which can be used to query keyboard states.
keyEventManager KeyEventManager
The global singleton instance of KeyEventManager, which is used internally to dispatch key messages.
lifecycleState AppLifecycleState?
Whether the application is visible, and if so, whether it is currently interactive.
locked bool
Whether lockEvents is currently locking events.
microtaskCount int
The number of outstanding microtasks in the queue.
mouseTracker MouseTracker
The object that manages state about currently connected mice, for hover notification.
overrideHttpClient bool
Determines whether the Dart HttpClient class should be overridden to always return a failure response.
pipelineOwner PipelineOwner
The render tree's owner, which maintains dirty state for layout, composite, paint, and accessibility semantics.
platformDispatcher TestPlatformDispatcher
The ui.PlatformDispatcher to which this binding is bound.
platformMenuDelegate PlatformMenuDelegate
A delegate that communicates with a platform plugin for serializing and managing platform-rendered menu bars created by PlatformMenuBar.
read / writeinherited
pointerEventSource TestBindingEventSource
The source of the current pointer event.
pointerRouter PointerRouter
A router that routes all pointer events received from the engine.
pointerSignalResolver PointerSignalResolver
The resolver used for determining which widget handles a PointerSignalEvent.
registerTestTextInput bool
Determines whether the binding automatically registers testTextInput as a fake keyboard implementation.
renderView RenderView
The render tree that's attached to the output surface.
read / writeinherited
renderViewElement Element?
Deprecated. Will be removed in a future version of Flutter.
resamplingEnabled bool
Enable pointer event resampling for touch devices by setting this to true.
read / writeinherited
restorationManager TestRestorationManager
The RestorationManager synchronizes the restoration data between engine and framework.
rootElement Element?
The Element that is at the root of the element tree hierarchy.
runtimeType Type
A representation of the runtime type of the object.
samplingOffset Duration
Offset relative to current frame time that should be used for resampling. The samplingOffset is expected to be negative. Non-negative samplingOffset is allowed but will effectively disable resampling.
read / writeinherited
schedulerPhase SchedulerPhase
The phase that the scheduler is currently operating under.
schedulingStrategy SchedulingStrategy
The strategy to use when deciding whether to run a task or not.
read / writeinherited
semanticsEnabled bool
Whether semantics information must be collected.
sendFramesToEngine bool
Whether frames produced by drawFrame are sent to the engine.
shouldPropagateDevicePointerEvents bool
Whether pointer events from TestBindingEventSource.device will be propagated to the framework, or dropped.
read / write
showAppDumpInErrors bool
Whether to include the output of debugDumpApp() when reporting test failures.
read / write
systemFonts Listenable
Listenable that notifies when the available fonts on the system have changed.
testTextInput TestTextInput
A stub for the system's onscreen keyboard. Callers must set the focusedEditable before using this value.
transientCallbackCount int
The current number of transient frame callbacks scheduled.
waitUntilFirstFrameRasterized Future<void>
A future that completes when the Flutter engine has rasterized the first frame.
window TestWindow
Deprecated. Will be removed in a future version of Flutter.


addObserver(WidgetsBindingObserver observer) → void
Registers the given object as a binding observer. Binding observers are notified when various application events occur, for example when the system locale changes. Generally, one widget in the widget tree registers itself as a binding observer, and converts the system state into inherited widgets.
addPersistentFrameCallback(FrameCallback callback) → void
Adds a persistent frame callback.
addPostFrameCallback(FrameCallback callback) → void
Schedule a callback for the end of this frame.
addSemanticsEnabledListener(VoidCallback listener) → void
Adds a listener to be called when semanticsEnabled changes.
addTimingsCallback(TimingsCallback callback) → void
Add a TimingsCallback that receives FrameTiming sent from the engine.
allowFirstFrame() → void
Called after deferFirstFrame to tell the framework that it is ok to send the first frame to the engine now.
asyncBarrier() → void
This is called during test execution before and after the body has been executed.
attachRootWidget(Widget rootWidget) → void
Takes a widget and attaches it to the rootElement, creating it if necessary.
cancelFrameCallbackWithId(int id) → void
Cancels the transient frame callback with the given id.
cancelPointer(int pointer) → void
Dispatch a PointerCancelEvent for the given pointer soon.
computePlatformResolvedLocale(List<Locale> supportedLocales) Locale?
Computes the locale the current platform would resolve to.
createBinaryMessenger() TestDefaultBinaryMessenger
Creates a default BinaryMessenger instance that can be used for sending platform messages.
createImageCache() ImageCache
Creates the ImageCache singleton (accessible via imageCache).
createRestorationManager() TestRestorationManager
Creates the RestorationManager instance available via restorationManager.
createSemanticsUpdateBuilder() SemanticsUpdateBuilder
Creates an empty semantics update builder.
createViewConfiguration() ViewConfiguration
Returns a ViewConfiguration configured for the RenderView based on the current environment.
debugAssertNoPendingPerformanceModeRequests(String reason) bool
Asserts that there are no pending performance mode requests in debug mode.
debugAssertNoTimeDilation(String reason) bool
Asserts that there is no artificial time dilation in debug mode.
debugAssertNoTransientCallbacks(String reason) bool
Asserts that there are no registered transient callbacks; if there are, prints their locations and throws an exception.
debugCheckZone(String entryPoint) bool
Checks that the current Zone is the same as that which was used to initialize the binding.
debugGetRequestedPerformanceMode() DartPerformanceMode?
Returns the current DartPerformanceMode requested or null if no requests have been made.
deferFirstFrame() → void
Tell the framework to not send the first frames to the engine until there is a corresponding call to allowFirstFrame.
delayed(Duration duration) Future<void>
Delay for duration of time.
dispatchAccessibilityFeaturesChanged() → void
Notify all the observers that the active set of AccessibilityFeatures has changed (using WidgetsBindingObserver.didChangeAccessibilityFeatures), giving them the features argument.
dispatchEvent(PointerEvent event, HitTestResult? hitTestResult) → void
Dispatch an event to pointerRouter and the path of a hit test result.
dispatchLocalesChanged(List<Locale>? locales) → void
Notify all the observers that the locale has changed (using WidgetsBindingObserver.didChangeLocales), giving them the locales argument.
drawFrame() → void
Pump the build and rendering pipeline to generate a frame.
ensureFrameCallbacksRegistered() → void
Ensures callbacks for PlatformDispatcher.onBeginFrame and PlatformDispatcher.onDrawFrame are registered.
ensureSemantics() SemanticsHandle
Creates a new SemanticsHandle and requests the collection of semantics information.
ensureVisualUpdate() → void
Schedules a new frame using scheduleFrame if this object is not currently producing a frame.
evict(String asset) → void
Called in response to the ext.flutter.evict service extension.
exitApplication(AppExitType exitType, [int exitCode = 0]) Future<AppExitResponse>
Exits the application by calling the native application API method for exiting an application cleanly.
globalToLocal(Offset point, RenderView view) Offset
Convert the given point from the global coordinate space of the provided RenderView to its local one.
handleAccessibilityFeaturesChanged() → void
Called when the platform accessibility features change.
handleAppLifecycleStateChanged(AppLifecycleState state) → void
Called when the application lifecycle state changes.
handleBeginFrame(Duration? rawTimeStamp) → void
Called by the engine to prepare the framework to produce a new frame.
handleDrawFrame() → void
Called by the engine to produce a new frame.
handleEvent(PointerEvent event, HitTestEntry<HitTestTarget> entry) → void
Override this method to receive events.
handleEventLoopCallback() bool
Execute the highest-priority task, if it is of a high enough priority.
handleLocaleChanged() → void
Called when the system locale changes.
handleMemoryPressure() → void
Called when the operating system notifies the application of a memory pressure situation.
handleMetricsChanged() → void
Called when the system metrics change.
handlePlatformBrightnessChanged() → void
Called when the platform brightness changes.
handlePointerEvent(PointerEvent event) → void
Dispatch an event to the targets found by a hit test on its position.
handlePointerEventForSource(PointerEvent event, {TestBindingEventSource source = TestBindingEventSource.device}) → void
Dispatch an event to the targets found by a hit test on its position, and remember its source as pointerEventSource.
handlePopRoute() Future<void>
Called when the system pops the current route.
handlePushRoute(String route) Future<void>
Called when the host tells the app to push a new route onto the navigator.
handleRequestAppExit() Future<AppExitResponse>
Handles any requests for application exit that may be received on the SystemChannels.platform method channel.
handleSystemMessage(Object systemMessage) Future<void>
Handler called for messages received on the SystemChannels.system message channel.
handleTextScaleFactorChanged() → void
Called when the platform text scale factor changes.
hitTest(HitTestResult result, Offset position) → void
Deprecated. Use hitTestInView instead.
hitTestInView(HitTestResult result, Offset position, int viewId) → void
Determine which HitTestTarget objects are located at a given position in the specified view.
idle() Future<void>
Acts as if the application went idle.
initializationComplete() Future<void>
Alert the engine that the binding is registered. This instructs the engine to register its top level window handler on Windows. This signals that the app is able to process "System.requestAppExit" signals from the engine.
initInstances() → void
The initialization method. Subclasses override this method to hook into the platform and otherwise configure their services. Subclasses must call "super.initInstances()".
initLicenses() → void
Adds relevant licenses to the LicenseRegistry.
initMouseTracker([MouseTracker? tracker]) → void
Creates a MouseTracker which manages state about currently connected mice, for hover notification.
initRenderView() → void
Creates a RenderView object to be the root of the RenderObject rendering tree, and initializes it so that it will be rendered when the next frame is requested.
initServiceExtensions() → void
Called when the binding is initialized, to register service extensions.
instantiateImageCodec(Uint8List bytes, {int? cacheWidth, int? cacheHeight, bool allowUpscaling = false}) Future<Codec>
Calls through to dart:ui.instantiateImageCodec from ImageCache.
instantiateImageCodecFromBuffer(ImmutableBuffer buffer, {int? cacheWidth, int? cacheHeight, bool allowUpscaling = false}) Future<Codec>
Calls through to dart:ui.instantiateImageCodecFromBuffer from ImageCache.
instantiateImageCodecWithSize(ImmutableBuffer buffer, {TargetImageSizeCallback? getTargetSize}) Future<Codec>
Calls through to dart:ui.instantiateImageCodecWithSize from ImageCache.
localToGlobal(Offset point, RenderView view) Offset
Convert the given point from the local coordinate space to the global coordinate space of the RenderView.
lockEvents(Future<void> callback()) Future<void>
Locks the dispatching of asynchronous events and callbacks until the callback's future completes.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
performReassemble() Future<void>
This method is called by reassembleApplication to actually cause the application to reassemble, e.g. after a hot reload.
performSemanticsAction(SemanticsActionEvent action) → void
Called whenever the platform requests an action to be performed on a SemanticsNode.
postEvent(String eventKind, Map<String, dynamic> eventData) → void
All events dispatched by a BindingBase use this method instead of calling developer.postEvent directly so that tests for BindingBase can track which events were dispatched by overriding this method.
postTest() → void
Called by the testWidgets function after a test is executed.
pump([Duration? duration, EnginePhase newPhase = EnginePhase.sendSemanticsUpdate]) Future<void>
Triggers a frame sequence (build/layout/paint/etc), then flushes microtasks.
readInitialLifecycleStateFromNativeWindow() → void
Initializes the lifecycleState with the dart:ui.PlatformDispatcher.initialLifecycleState.
readTestInitialLifecycleStateFromNativeWindow() → void
Re-attempts the initialization of the lifecycle state after providing test values in TestWindow.initialLifecycleStateTestValue.
reassembleApplication() Future<void>
Cause the entire application to redraw, e.g. after a hot reload.
registerBoolServiceExtension({required String name, required AsyncValueGetter<bool> getter, required AsyncValueSetter<bool> setter}) → void
Registers a service extension method with the given name (full name "ext.flutter.name"), which takes a single argument "enabled" which can have the value "true" or the value "false" or can be omitted to read the current value. (Any value other than "true" is considered equivalent to "false". Other arguments are ignored.)
registerNumericServiceExtension({required String name, required AsyncValueGetter<double> getter, required AsyncValueSetter<double> setter}) → void
Registers a service extension method with the given name (full name "ext.flutter.name"), which takes a single argument with the same name as the method which, if present, must have a value that can be parsed by double.parse, and can be omitted to read the current value. (Other arguments are ignored.)
registerServiceExtension({required String name, required ServiceExtensionCallback callback}) → void
Registers a service extension method with the given name (full name "ext.flutter.name").
registerSignalServiceExtension({required String name, required AsyncCallback callback}) → void
Registers a service extension method with the given name (full name "ext.flutter.name"), which takes no arguments and returns no value.
registerStringServiceExtension({required String name, required AsyncValueGetter<String> getter, required AsyncValueSetter<String> setter}) → void
Registers a service extension method with the given name (full name "ext.flutter.name"), which optionally takes a single argument with the name "value". If the argument is omitted, the value is to be read, otherwise it is to be set. Returns the current value.
removeObserver(WidgetsBindingObserver observer) bool
Unregisters the given observer. This should be used sparingly as it is relatively expensive (O(N) in the number of registered observers).
removeSemanticsEnabledListener(VoidCallback listener) → void
Removes a listener added by addSemanticsEnabledListener.
removeTimingsCallback(TimingsCallback callback) → void
Removes a callback that was earlier added by addTimingsCallback.
reportExceptionNoticed(FlutterErrorDetails exception) → void
Called when the framework catches an exception, even if that exception is being handled by takeException.
requestPerformanceMode(DartPerformanceMode mode) PerformanceModeRequestHandle?
Request a specific DartPerformanceMode.
reset() → void
Called by the test framework at the beginning of a widget test to prepare the binding for the next test.
resetEpoch() → void
Prepares the scheduler for a non-monotonic change to how time stamps are calculated.
resetFirstFrameSent() → void
Call this to pretend that no frames have been sent to the engine yet.
resetGestureBinding() → void
Reset states of GestureBinding.
resetLifecycleState() → void
Allows the test framework to reset the lifecycle state back to its initial value.
runAsync<T>(Future<T> callback()) Future<T?>
Runs a callback that performs real asynchronous work.
runTest(Future<void> testBody(), VoidCallback invariantTester, {String description = ''}) Future<void>
Call the testBody inside a FakeAsync scope on which pump can advance time.
scheduleAttachRootWidget(Widget rootWidget) → void
Schedules a Timer for attaching the root widget.
scheduleForcedFrame() → void
Schedules a new frame by calling dart:ui.PlatformDispatcher.scheduleFrame.
scheduleFrame() → void
If necessary, schedules a new frame by calling dart:ui.PlatformDispatcher.scheduleFrame.
scheduleFrameCallback(FrameCallback callback, {bool rescheduling = false}) int
Schedules the given transient frame callback.
scheduleTask<T>(TaskCallback<T> task, Priority priority, {String? debugLabel, Flow? flow}) Future<T>
Schedules the given task with the given priority.
scheduleWarmUpFrame() → void
Schedule a frame to run as soon as possible, rather than waiting for the engine to request a frame in response to a system "Vsync" signal.
setLocale(String languageCode, String countryCode) Future<void>
Artificially calls dispatchLocalesChanged on the Widget binding, then flushes microtasks.
setLocales(List<Locale> locales) Future<void>
Artificially calls dispatchLocalesChanged on the Widget binding, then flushes microtasks.
setSurfaceSize(Size? size) Future<void>
Artificially changes the surface size to size on the Widget binding, then flushes microtasks.
setSystemUiChangeCallback(SystemUiChangeCallback? callback) → void
Sets the callback for the SystemChrome.systemUIChange method call received on the SystemChannels.platform channel.
takeAnnouncements() List<CapturedAccessibilityAnnouncement>
Returns a list of all the accessibility announcements made by the Flutter framework since the last time this function was called.
takeException() → dynamic
Returns the exception most recently caught by the Flutter framework.
toString() String
A string representation of this object.
unlocked() → void
Called by lockEvents when events get unlocked.
withPointerEventSource(TestBindingEventSource source, VoidCallback task) → void
Sets pointerEventSource to source, runs task, then resets source to the previous value.
wrapWithDefaultView(Widget rootWidget) Widget
Used by runApp to wrap the provided rootWidget in the default View.


operator ==(Object other) bool
The equality operator.

Static Properties

instance TestWidgetsFlutterBinding
The current TestWidgetsFlutterBinding, if one has been created.

Static Methods

ensureInitialized([Map<String, String>? environment]) TestWidgetsFlutterBinding
Creates and initializes the binding. This function is idempotent; calling it a second time will just return the previously-created instance.