The name is very misleading at this point, since it does substantially
more than build flutter_assets. Name it more generically as a wrapper
for 'assemble' for macOS builds.
Fix some places where Debug/Release was treated as a binary switch.
Makes similar changes to Windows and Linux to simplify adding profile
support to those platforms in the future. This means `--profile` builds
will fail on Linux and Windows for now, but that's fine since they
aren't actually supported, and unlike `--release` don't provide useful
functionality at the native code level.
Also fixes 'stopApp' always using Debug on macOS, to avoid showing an
error when running Profile (or Release).
Fixes#33203
Originally we wanted to cast as wide of a net and make the warning as
prominent as possible. Recently we've received feedback that the false
positives are more harmful than not, so downgrading the loud message to
a single line warning.
In the build of PlatformViewLink, Added a FocusNode wrapping around the surface widget.
The focus node will ask platform view to clear its focus when necessary through [PlatformViewController.clearFocus].
The platform view can notify the framework it wants to gain focus by calling [PlatformViewCreationParams.onFocusChanged]
I noticed that we were pretty inconsistent with the way that we checked the value of clipBehavior in the framework, so I normalized the usages and updated docs where necessary.
This is a breaking change if you used to pass null explicitly to FlatButton, OutlineButton or RaisedButton constructors, expecting to get Clip.none. It will now assert if you do that. Existing implementations that pass null implicitly by not specifying clipBehavior won't need to change their call sites. It always implicitly defaulted to Clip.none before, and it will continue to do that, it's only places where it was explicitly set to null in order to get the implicit default that it will fail.
This fixes the hashCode calculation for KeySet<T> so that it doesn't depend on the insertion order of the keys in the set.
The fix involves switching from Set<T> to HashSet<T> internally, so that the iteration order is stable around the hash values of the inserted keys, and not the insertion order. This matters when hashList is called in KeySet<T>.hashCode to build the hash value of the contents of the internal set.
Fixes#38919
BottomSheetThemeData has an additional field modalElevation which makes it possible to set different elevations between persistent and modal bottom sheets.
* Moved the default BinaryMessenger instance to ServicesBinding
This reverts commit 821602aef3.
* Added assertion in defaultBinaryMessenger. Also fixed the devicelab tests.
* Added a composable waitForCondition Driver/extension API.
This reverts commit df2db4e50f.
* Added SerializableWaitCondition for communicating between driver script on host and extension on device.
When building in profile or release mode on desktop, add a prominent
warning that it's actually a debug build. This is to help address issues
with people being unaware of the current state of builds due to
following third-party guides rather than official documentation.
macOS is not included since PRs are in flight for macOS release support.
This reverts commit a11d73148c because of a regression in
flutter_gallery_ios32__transition_perf's 90th_percentile_frame_build_time_millis.
Fixes#38860.
Flutter widget tests assert if a test completes with timers still
pending. However, it can be hard to diagnose where a pending timer
came from. For example, a widget might consume a third-party library
that internally uses a timer.
I added a FakeAsync.pendingTimersDebugInfo getter to quiver
(https://github.com/google/quiver-dart/pull/500). Make flutter_test
use it.
Additionally modify Flutter's debugPrintStack to take an optional
StackTrace argument instead of always printing StackTrace.current.
Fixes#4237.
Switch from the un-suffixed Windows and Linux libraries to the
_glfw-suffixed versions, in preparation for having non-GLFW versions
using the previous library/wrapper names.
Part of #38589
* Added new ButtonBarTheme to replace the deprecated ButtonTheme.bar method.
* Responding to PR feedback.
* [Material] Create material Banner component (#36880)
This PR creates a new material widget for the Banner component. This includes a theme as well. This widget can be dropped into any application, ideally at the top of a listview or scrollview.
(cherry picked from commit 35b6d668e1)
Removed the use of ButtonTheme.bar in the Banner implementation.
* Updated documentation from PR review comments.
We were using the `defaults` command-line utility to parse
Plist files, but it was never supported by Apple, and it
appears that in an upcoming OS release, it will be less likely
to work:
> WARNING: The defaults command will be changed in an upcoming
> major release to only operate on preferences domains. General
> plist manipulation utilities will be folded into a different
> command-line program.
Fixes https://github.com/flutter/flutter/issues/37701
* Add an 'unfocusable' focus node to allow developers to indicate when they don't want a Focus widget to be active
* more unfocusable changes. not working.
* Switch to focusable attribute
* Rename to canRequestFocus
* Turn off debug output
* Update docs
* Removed unused import
Teach Layer and its implementations, RenderObject and its implementations, and PaintingContext to reuse engine layers. The idea is that a concrete RenderObject creates a Layer and holds on to it as long as it needs it (i.e. when it is composited, and the layer type does not change). In return, each Layer object holds on to an EngineLayer and reports it to the engine via addRetained and oldLayer. This allows the Web engine to reuse DOM elements across frames. Without it, each frame drops all previously rendered HTML and regenerates it from scratch.
* Broadcasting popRoute and pushRoute methods via SystemChannels.navigation. These messages will be used in flutter_web to detect the route
* Broadcasting popRoute and pushRoute methods via SystemChannels.navigation. These messages will be used in flutter_web to detect the route
* Reverting all unrelated formatting changes.
* Adding unit tests. Adding more comments.
* Changing string method names with constant strings.
* Fixing a constant strings.
* Fixing analyzer error.
* Fixing more white space.
* Changing the method names. Adding comments to the SystemChannels
* Comment and code name fixes
* replacing the comment with reviewer suggestion.
* addinf systemchannels.navigation mock to test bindings
* Adding a new class for sending route change notrifications. The nottifications are only sent on web. This should fix breaking android/ios
* using new class RouteNotificationMessages in navigator
* Fixing analyzer issues.
* fixing cycle dependency
* fixing github analyze error
* dartfmt two new classes. trying to fix anayze errors
* Update route_notification_messages.dart
* trying to fix white space errors
This adds a FocusHighlightMode to the FocusManager that switches based on the type of input that has recently been received. The initial value is based on the platform, but is updated as soon as user input is received. There is also a FocusHighlightStrategy enum so that the developer can change the strategy to a fixed value if needed.
The default is to automatically detect the mode based on the last type of user input. If they use a mouse or keyboard, it shows the focus highlights. If they use a touch interface, then the highlights disappear. This is consistent with the way that Android and Chrome work. The controls still receive focus, only the display of the highlight changes.
Text fields show the focus highlight regardless of the focus highlight mode.
* Take growth direction into account when computing value for getOffsetForReveal in AxisDirection.right and .up conditions.
* Add alignment 1.0 test to left - reverse growth
* Add Reverse List showOnScreen test
* Formatting fix.
getTransformTo now includes ancestor in the transform it returns, except
for if ancestor is the root view, ensuring that the transform remains in
logical pixel space.
Add an autofocus parameter to widgets which use Focus widget internally, and update related docs.
This will allow developers to request that a particular widget be automatically focused when shown.
* Add a test for a directory instead of a single test.
* Add test data to a child directory to test the command.
* Add test data to a child directory to test the command.
* Add test data to a child directory to test the command.
* Correct test.
This improves the ability to debug focus manager issues. It's not meant to be used by developers unless they're debugging problems with the focus manager itself.
This reverts commit 92ef2b9ce1.
This requires either runApp() or
WidgetsFlutterBinding.ensureInitialized() to have been called before
using any MethodChannels. Plugins broadly rely on MethodChannels and
right now there's no general requirements that they be constructed
within the runApp call, so the ecosystem breakages from this are broader
than originally thought. Reverting for now.
* Add checkColor to CheckboxListTile
* Create second paint for drawing check and dash
* Add activeColor test for Checkbox
Co-Authored-By: Shi-Hao Hong <shihaohong@google.com>
TimelineEvents may not be sent if there aren't enough to form a group.
Hence we should always use ExtensionEvent as the trigger.
See also https://github.com/flutter/flutter/pull/37503
This PR fixes an issue where MouseRegion crashes when being passed with closures instead of methods.
It changes how a RenderMouseRegion handles its MouseTrackingAnnotation.
Instead of creating a new annotation every time it becomes active and destroys it when deactivated, it now creates an annotation during the constructor and holds onto it until the end of its lifecycle.
Instead of directly passing the argument callbacks to the annotation, it proxies them using methods.
This PR creates a new material widget for the Banner component. This includes a theme as well. This widget can be dropped into any application, ideally at the top of a listview or scrollview.
The hack here is to flush the timeline events so the host that
waits for the 'Rasterized first useful frame' event won't hang.
Previously 'Widgets built first useful frame' didn't cause this
trouble because the GPU thread will naturally add more events later
and cause a fresh. The `Rasterized...` event, however, is likely
to be the last (or nearly the last) event during the app start up.
rmacnak and I will figure out a better way to fix it next week.
We're having this quick hack now to fix our device lab performance
tests so we won't miss the data points.
* Update constructor APIs TooltipTheme, ToggleButtonsTheme, PopupMenuTheme
The constructor signatures for TooltipTheme, ToggleButtonsTheme, PopupMenuTheme have been incompatibly changed. They now require just one theme data parameter.
* painting and semantics
* more comments
* fixing ci
* review fixes
* add assert for id
* rename custom layer factory to layer builder
* review updates
* partial review fixes
* some doc updates
* more doc updates
* only expose getter for id in PlatformViewController
* doc updates/removing all the references
* remove extra
* more doc updates
* some doc updates
* more doc fixes
* review fixes
- Splits on{Enter,Hover,Exit} from Listener to MouseRegion. Deprecated API is kept for compatibility.
- Splits on{Enter,Hover,Exit} from RenderPointerListener to RenderMouseRegion.
Primarily these methods no longer allocate any objects other than their
return values.
Additionally, the math in the methods is reduced compared to the general
case math based on known input conditions.
Modified to no longer generate infinite values in some finite cases.
This relands https://github.com/flutter/flutter/pull/35297
The followings have been done to fix the broken tests:
1. Add `didSendFirstFrameRasterizedEvent` extension and its tests
2. Wait for `didSendFirstFrameRasterizedEvent` instead of
`didSendFirstFrameEvent` during start up tests
3. Mark missed (probably newly added) start up tests as flaky
* Add searchFieldLabel to SearchDelegate in order to show a custom hint label.
* Add support for specifying textInputAction and keyboardType in SearchDelegate
This PR makes ModalBarrier dismiss modal with any button press instead of primary button up, by making it use a private recognizer _AnyTapGestureRecognizer that is similar to TapGestureRecognizer but accepts gestures by any single button.