LiveTestWidgetsFlutterBinding class

A variant of TestWidgetsFlutterBinding for executing tests in the flutter run environment, on a device. This is intended to allow interactive test development.

This is not the way to run a remote-control test. To run a test on a device from a development computer, see the flutter_driver package and the flutter drive command.

When running tests using flutter run, consider adding the --use-test-fonts argument so that the fonts used match those used under flutter test. (This forces all text to use the "Ahem" font, which is a font that covers ASCII characters and gives them all the appearance of a square whose size equals the font size.)

This binding overrides the default SchedulerBinding behavior to ensure that tests work in the same way in this environment as they would under the AutomatedTestWidgetsFlutterBinding. To override this (and see intermediate frames that the test does not explicitly trigger), set framePolicy to LiveTestWidgetsFlutterBindingFramePolicy.fullyLive. (This is likely to make tests fail, though, especially if e.g. they test how many times a particular widget was built.) The default behavior is to show pumped frames and a few additional frames when pointers are triggered (to animate the pointer crosshairs).

This binding does not support the EnginePhase argument to pump. (There would be no point setting it to a value that doesn't trigger a paint, since then you could not see anything anyway.)

See TestWidgetsFlutterBinding for a list of mixins that must be provided by the binding active while the test framework is running.

Inheritance
Implementers

Constructors

LiveTestWidgetsFlutterBinding()

Properties

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

Methods

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

Operators

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

Static Properties

instance LiveTestWidgetsFlutterBinding
The current LiveTestWidgetsFlutterBinding, if one has been created.
no setter

Static Methods

ensureInitialized() LiveTestWidgetsFlutterBinding
Returns an instance of the binding that implements LiveTestWidgetsFlutterBinding. If no binding has yet been initialized, the a new instance is created.
override