* 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.
* (insert|move|remove)ChildRenderObject Deprecation: Step 1
This deprecates the following methods:
* RenderObjectElement.insertChildRenderObject
* RenderObjectElement.moveChildRenderObject
* RenderObjectElement.removeChildRenderObject
...and replaces them with the following methods:
* RenderObjectElement.insertRenderObjectChild
* RenderObjectElement.moveRenderObjectChild
* RenderObjectElement.removeRenderObjectChild
The reason for the deprecation is to provide the `oldSlot` argument to
the `moveRenderObjectChild` method (such an argument was missing from
the now-deprecated `moveChildRenderObject` method) and the `slot`
argument to the `removeRenderObjectChild` method (such an argument was
missing from the now-deprecated `removeChildRenderObject` method). While
no argument was added to `insertRenderObjectChild`, the name change (and
corresponding deprecation) was made to maintain naming parity with the
other two methods.
This initial step does not update or remove any of the `slotToChild`
patterns that exist in the framework. This work is being separated
into two commits in case something needs to be reverted to minimize
the scope of each commit.
See https://github.com/flutter/flutter/issues/63269 for more info
This standardizes the handling of nullability for the LogicalKeyboardKey.keyLabel and RawKeyEventData.keyLabel accessors so that they are non-nullable, but can be empty.
Before this change, the keyLabel could be either null or an empty string to indicate that there wasn't a label, which makes it harder to test for, since both need to be checked for. Since an empty string is sufficient, there is no need for it to be nullable.
Also, in raw_keyboard.dart, the web and Windows implementations wouldn't accept null values for parameters in the Map coming from the message, but tests were supplying null for some of them. This makes web and Windows creation of events match the other platforms, and makes the migration of tests to non-nullability easier.
Now that https://github.com/dart-lang/sdk/issues/41985 is fixed, the
analyzer detects dead code due to "unnecessary" null checks. Since we
want to retain null checks in Flutter even when they appear
unnecessary (in order to preserve runtime behavior in weak mode), we
need to suppress these dead code hints.
Note that one assertion is removed by this PR (`heightFactor != null
|| (heightFactor == 1.0 && heightDelta == 0.0)`). This is because
`heightFactor == 1.0 && heightDelta == 0.0` can only be true if
`heightFactor != null`, so this assertion is equivalent to simply
asserting that `heightFactor != null`, which is already asserted two
lines above.
* Fix sort indicator for DataTables
As per material spec ascending order should be shown via an upward arrow
This commit changes the displayed arrows accordingly.
* Test sort indicator orientation in DataTable
* Add native stacktrace field for PlatformException
* Mute the readValue check for stacktrace.
* polish
* Add unit test and further polish
* Added more comments
* remove unnecessary import
* fill in stacktrace to JSONMethodCodec and fix tests
* fix style
* Fix format
* Remove unnecessary TODO since not all explicitly declared errors have stacktrace in it from native side.
* Handle case for exception without stacktrace on jsonMethodCodec
* Add more unit tests
* format test
Co-authored-by: Ben Li <libe@google.com>