Currently the framework handles delete, but not backspace, so embeddings
all have to implement backspace handling themselves. This eliminates
that inconsistency and allows simplified code in embeddings by adding
backspace handling.
It also fixes a bug uncovered in the delete handling where deleting a
selection would also delete the next character after the selection.
* PointerEvent.local* properties are calculated lazily; other properties are delegated to original.
* Transformed PointerEvent becomes a subclass of its original class.
* Unnamed constructors no longer accepts transform and origin.
* Revert "docs for image disposal (#67066)"
This reverts commit bcb2ac5a55b90b2ccfd50de4684c0cbb8aca9290.
* Revert "Dispose of images after using them (#66688)"
This reverts commit a7954691dad4788f985cf17e81ce6c474a72e84e.
* Dispose of images after using them
Adds ImageInfo.clone, ImageInfo.dispose, and ImageInfo.isCloneOf.
Makes all stateful holders of ui.Image objects properly clone and dispose of them.
Behavior change for ImageStreamCompleter: Removing the last listener after registering at least one listener results in the object being disposed, and new listeners cannot be added, unless a keepAlive handle is created.
Makes all non-stateful holders of ui.Image (i.e. paintImage and RawImage) assert that whoever gave the image to them has not disposed it on them.
Registering the service worker immediately after the documented has loaded may cause SW initialization to compete with framework initialization. It was recommended to us that we defer the service worker setup until after the framework is done with setup, which should be sometime after the first frame.
To implement this, I augmented the binding setup to dispatch an event on the document after the binding has initialized. I don't see any obvious risks with this setup.
Fixes#66066
* Reland "Nnbd widgets (#64672)"
This reverts commit 127e67902e8bbb0dcbfb3351b8fd00f7cbdf0178.
* remove non-nullable enforcement on AsyncSnapshot
* make data param non-nullable for AsyncSnapshot.withData
* make some Text params non-nullable
* migrate widget to nullsafety
* remove double blank line after license
* address review comments in actions.dart
* nullable ObjectKey.value
* use local variable oldElement
* make State.build non-nullable
* make State.context non-nullable
* newline at eof
* make ProxyWidget.child non-nullable
* make _InactiveElements.debugContains non-nullable
* make Element.depth non-nullable
* make ProxyElement.build non-nullable
* make StatefulElement.state non-nullable
* remove 'Notice that'
* avoid cast of list in RenderObjectElement.updateChildren
* make IndexedSlot.value non-nullable
* avoid cast of list in MultiChildRenderObjectElement.mount
* make some WidgetsApp parameters non-nullable
* hitTest take non-nullable position
* make ScrollableState.position non-nullable
* use _pixels instead of pixels
* make ViewportOffset.pixels non-nullable
* make param and return type of IndexedWidgetBuilder non-nullable
* unused_import
* make context param non-nullable for Builder in animated_list.dart
* make ScrollMetrics.viewportDimension non-nullable
* make ScrollMetrics.{min,max}ScrollExtent non-nullable
* make _Location.file non-nullable
* _WidgetForTypeTests.createElement throw UnimplementedError
* update _NullWidget.build error message
* make _ShortcutsState.manager non-nullable
* Fix childCount issues for NNBD
* fix childCount computation on web
* increase max value on js side to compute childCount
* make aspect parameter of dependOnInheritedWidgetOfExactType nullable
* merge has{min,max}ScrollExtent into hasScrollExtents
* update focus_manager.dart
* address review comments in icon.dart
* address review comments in image.dart
* address review comments in routes.dart
* address review comments in scroll_activity.dart
* update doc comments
* make UserScrollNotification.direction non-nullable and required
* rename hasScrollExtents to hasContentDimensions
* unnecessary late
Co-authored-by: Ian Hickson <ian@hixie.ch>
Flutter's `moreOrLessEquals` has a few advantages over `closeTo` from
the `matcher` package:
* It emits the epsilon value in the test result on failure.
* It uses a named parameter for epsilon, which improves readability
at the call site.
* It has a reasonable default for epsilon in cases where something
more specific isn't required.
Using it also has the nice property that it aids in its own discovery
when when people go looking for such functionality in new tests.
This change also includes a couple unrelated whitespace formatting cleanups.
Several of our tests make use of numbers without an exact floating point
representation (frequently 0.x where x!=5) which, when scaled, also
scale the error. The end result is that some of these tests currently
implicitly rely on an implementation detail of floating point math and
are sensitive to differences in the ~15th decimal place.
This patch reduces the sensitivity of some of these tests, checking
values using `moreOrLessEquals` from the flutter_test package
rather than requiring en exact match.
* Redesigns the interface between MouseTracker and RendererBinding&RenderView.
* Simplifies the structure of RenderMouseRegion.
* Extracts the common utility code between mouse_tracker_test and mouse_tracker_cursor_test.