This results in running Flutter Gallery with one less thread (platform
and gpu threads are the the same).
This is very likely to cause a regression in the iOS Gallery benchmarks.
I'm mainly interested in landing this to see how much the benchmarks
regress, and it's likely that we will revert it shortly after landing.
* some space formattings
* always use blocks in if-else if a block is used
* format spaces in for and while
* allow multiline if conditions
* fix missing space
* add trailing commas on list/map/parameters
* add trailing commas on Invocation with nb of arg>1
* add commas for widget containing widgets
* add trailing commas if instantiation contains trailing comma
* revert bad change
## Description
This moves another 15-20ms from the animation jank of one of our important client to the startup latency. Unfortunately, this is probably not captured in our current benchmarks (presumably some other bottlenecks overshadow this shader compilation in the worst_frame benchmark). Considering that drawing images is such a common operation, maybe we should add one in the future to benchmark this.
We need this PR to land soon for our client because this changes the API to return Future.
## Related Issues
https://github.com/flutter/flutter/issues/813
This patch adds a default shader warm up process which moves shader compilation from the animation time to the startup time. This also provides an extension for `runApp` so developers can customize the warm up process.
This should reduce our worst_frame_rasterizer_time_millis from ~100ms to ~20-30ms for both flutter_gallery and complex_layout benchmarks. Besides, this should also have a significant improvement on 90th and 99th percentile time (50%-100% speedup in some cases, but I haven't tested them thoroughly; I'll let our device lab collect the data afterwards).
The tradeoff the is the startup time (time to first frame). Our `flutter run --profile --trace-startup` seems to be a little noisy and I see about 100ms-200ms increase in that measurement for complex_layout and flutter_gallery. Note that this only happens on the first run after install or data wipe. Later the Skia persistent cache will remove the overhead.
This also adds a cubic_bezier benchmark to test the custom shader warm up process.
This should fix https://github.com/flutter/flutter/issues/813 (either by `defaultShaderWarmUp`, or a `customShaderWarmUp`).
* Update doc header in Opacity class to fix issue #23311
* Added slider with editable numerical value to gallery. Fixes flutter#1542
* Revert "Update doc header in Opacity class to fix issue #23311"
This reverts commit 2d3642bbda.
* Fix typo in slider description
* Increase TextField size to pass accessibility test
* Added Semantics widget to pass accessibility test
* Made description start with caps to match other examples
* Removed unnecessary spacing Container widget
* Update authors file
* Fix indent
* Removed decimal and replaced boundaries with .clamp
Signed-off-by: Martin Staadecker <machstg@gmail.com>
* Undo line wrap from previous commit
Signed-off-by: Martin Staadecker <machstg@gmail.com>
* Update onSubmitted to only call setState when value has changed
Signed-off-by: Martin Staadecker <machstg@gmail.com>
* move flutter_assets to App.framework
* Roll engine to 05fee4eeee0ff6b219b1fcc394371e5f6963cc46
05fee4eee Update default flutter_assets path for iOS embedding (flutter/engine#7518)
02205db01 Roll src/third_party/skia 5d052dac3ac1..02738a86e5fd (4 commits) (flutter/engine#7541)
af907c074 Roll src/third_party/skia 5c7a3ac0e214..5d052dac3ac1 (7 commits) (flutter/engine#7540)
dde286673 IWYU to get SkFontMetrics (flutter/engine#7539)
Usages of ParagraphConstraints (from dart:ui) whose constructor could be
const as of flutter/engine#7346 are currently marked //
ignore:prefer_const_constructors in the framework until all
Google-internal embedders have been updated to an engine version that
includes the above change. These were initially updated in engine roll
flutter/flutter#26252, but broke internal embedders.
We should re-enable use of the const constructor in those cases once
internal embedders are updated.
See: https://github.com/flutter/flutter/issues/26390
* the onStart callback will report the location of the pointer where it wins the gesture arena by default instead of the pointer down location. Fixes all tests related to changing this default value.
* Adds start behavior option to the drag gesture recognizer and makes it the default option when a drag gesture recognizer is created. Also fixes all the tests to work correctly with the new default behavior.
This reverts commit 8acc058cf1.
Reverts #25483
Reason for revert: it seems to break the flutter_gallery_instrumentation_test post-submit test.
TBR: @sbaranov
* Revert "Add dashing config file for generating docset from flutter docs (#24374)"
This reverts commit ec8ca8606c.
* Revert "Update driver script to execute test through test_core (#24168)"
This reverts commit 6c62cf337f.
Make the examples/catalog instructions a bit less confusing:
* Make the README.md file provide explicit instructions about how to
run each example.
* Try to clarify that the lib/main.dart message is instructional and
not an error message.
Additionally, adjust examples/layers/lib/main.dart to be consistent
with examples/catalog/lib/main.dart.
Fixes#22640.
Testing Done:
* Ran `flutter run` from examples/catalog and from examples/layers,
saw the updated message.
Should fix#22226.
Code introduced in #20890 caused a regression that broke color flooding animations in a BottomNavigationBar that has BottomNavigationBarType.shifting.
The original issue (#19653) dealt with background color changes not occurring until another tab was selected. The result is that the background color instantly changes whenever the state changes and when the widget changes, instead of allowing a new widget to animate the background color change.
* Use Xcode build configurations to drive Flutter build mode
* Proper check wrt local_engine, print error if profile mode misisng
* Remove unused code, update tests, fix template problem, update warning
* fix up warning
* add explanatory dev comment
* fix whitespace
* missing words, change lambda arrow to function body
* error indentation
* Test early exits for xcode_backend.sh
* only on macOS, use right test
* Update error messages
* case insensitive compare for build config
* Update gallery podfile
* update projects to add profile configuration
* make compatible with flavors
* add missing plist files
* add FLUTTER_FRAMEWORK_DIR back, set swift version for profile, tell Podfile about profile
* Use Xcode build configurations to drive Flutter build mode
* Proper check wrt local_engine, print error if profile mode misisng
* Remove unused code, update tests, fix template problem, update warning
* fix up warning
* add explanatory dev comment
* fix whitespace
* missing words, change lambda arrow to function body
* error indentation
* Test early exits for xcode_backend.sh
* only on macOS, use right test
* Update error messages
* case insensitive compare for build config
* Update gallery podfile
* update projects to add profile configuration
* make compatible with flavors
* add missing plist files
Coverage 0.12.3 includes a fix for dart-lang/coverage#194, which was
causing errors on the flutter build bots.
Linter was updated automatically as a side effect of running
`flutter update-packages --force-upgrade`.
For G3 Roll:
* Revert "MaterialButton must honor its minWidth and height parameters (#22919)"
This reverts commit a02332335a.
* Revert "Update uses of ButtonTheme.bar: pass along the current Theme's colorScheme (#22827)"
This reverts commit 655bf6a290.
* Revert "ButtonTheme.of().colorScheme defers to Theme (#22880)"
This reverts commit a590940e45.
* Revert "Bring TextTheme into alignment with the current Material spec (#22330)"
This reverts commit 8bfb4b3ee5.
* Revert "Added ColorScheme, updated ThemeData, ButtonTheme, material buttons (#22013)"
This reverts commit eea3465ae7.
* Manual adjustments to fix reversion issues.
Adds a Fuchsia compatibility function that allows for connecting to a
specific Isolate by name when running Flutter Driver on a Fuchsia
device. This will check over multiple Dart VM's in an attempt to find
an Isolate by its name.
A few changes:
* Remove the search tip (it relies on searching for the new keyword which we no longer use)
* Remove mentioning of examples that are either stale or only used for internal purposes (such as test)
* Cross-link to the samples repo
Introduce an overall material "color scheme" and to make it possible to redefine how a component's visual properties bind to the color scheme and to the existing material Theme.
Improve Swift usage in platform_channel_swift some more
Make a bunch of changes that willlarche requested in
https://github.com/flutter/flutter/pull/21712:
* Use `static let` within `enum` namespaces for String constants.
* Use `guard` for early exits and to avoid forced unwrapping.
* Explicitly qualify a selector.
* Fix a retain cycle by using a weak reference.
Make platform_channels_swift use more idiomatic Swift
* Remove semicolons.
* `if (condition)` => `if condition`.
* `Class.init(...)` => `Class(...)`.
* Remove `break` statements from `switch` cases.
* Remove some unnecessary uses of `self`.
* Make CupertinoApp and MaterialApp both use WidgetsApp for Navigator
* Make CupertinoApp and MaterialApp const constructors
* Make WidgetsApp routes aware
* Update tests
* Improve documentation and clean up code.
* Remove "Note that".
The phrase "note that" is basically meaningless as a prefix to an
otherwise fine sentence.
The average frame time of page transitions on Moto G4 is now very
close to 16ms (the last 10 measurements on our dashboard are
between 15.5ms to 16.7ms and half of them are below 16ms).
It is now much faster than when we disabled it (which was at about
35ms). So I think that we should be able to enable it by default.
I'll leave the flag there until we implement the retained rendering
to bring the frame time comfortably below 16ms.
See https://github.com/flutter/flutter/issues/13736
* Fixes resulting from audit of issues links
I looked at every link to GitHub in our repo. For cases where we had a TODO that was waiting for a bug to be fixed, and the bug has now been fixed, I applied the pending change. For cases where the link was out of date, I updated the link.
* Update run_test.dart
skip this test again since it failed on linux and macos bots
* Reland "Roll engine to version b148e628ec86b3a9a0382e0bcfae73f0390a8232 (#20427)"
This is a re-land with downgraded `package:flutter_gallery_assets`
version.
* Downgrade package:flutter_gallery_assets to 0.1.4
* Change engine.version to 81baff97c29bb08cbf8453a3f9042c5813f84ad3 (which contains an additional fix)
* Change engine.version to e3687f70c7ece72000b32ee1b3c02755ba5361ac (since mac tarballs are corrupted on earlier commit)
Reason for revert: The package:flutter_gallery_assets has removed some images which are required for the examples/flutter_gallery, so the gallery build is failing (only discovered after landing, since gallery doesn't seem to get built during github PR presubmit checks)
This CL
* rolls `engine.version` to flutter/engine@b148e628 (which includes dart sdk 2.1.0-dev)
* rolls `goldens.version` to flutter/goldens@6c45fafdf (which includes updates due to skia changes in engine)
* changes `platform.dill` to `platform_strong.dill` in various places due to flutter/engine@a84b210b
* adds explicit `environment: sdk: ">=2.0.0-dev.68 < 3.0.0"` constraints to `pubspec.yaml` and `pubspec.yaml.tmpl` files (since pub defaults to `<2.0.0` if omitted)
* upgrades to newer versions of various 3rd party packages (to ensure transitive dependencies have `<3.0.0` sdk constraint)
* Upgrade everything except matcher.
* Roll matcher (and test)
* Adjust tests that depend on flutter:test directly to depend on a shim
* Require use of package:test shim and remove other references to package:test
Somehow I forgot to say "super.tap()" when calling "tap()" on the new
superclass, so it was just recursing infinitely but ended up actually
crashing on the first reuse of the finder.
The error was previously swallowed, I made this print it instead.
This removes the final traces of Travis and Appveyor from the Flutter tree.
I've updated the documentation and fixed a couple of places where scripts look for Travis, and eliminated the dart tools runningOnTravis function (which was unused anyhow).
There are places in the flutter script that used to look for the environment variable TRAVIS. We actually do want to continue to detect that we're running on Travis there, since in the plugins repo we still use Travis (for the moment). In any case, it's OK, because the CI environment variable is set on all of the CI bots (Cirrus, Travis, and Appveyor).
FastLane doesn't have a setup_cirrus equivalent to setup_travis, but it actually doesn't matter there either, since it doesn't do Travis-specific things, and it also looks for the CI environment variable.
Our Cirrus Windows tests were not really working: they reported success even when failing.
This should fix several problems with the Cirrus Windows tests.
Changes:
- Move the SemanticsConfiguration update from RenderToggleable to each subclass, so that Switch can use toggled.
- Add image, liveRegion, toggled properties to Semantics, SemanticsConfiguration, SemanticsNode
- Added semanticsLabel and excludeFromSemantics to Image (the latter so that we avoid creating a semantics node)
- Added onDismiss semantics action which maps to the modal escape on iOS and dismiss action on Android.
- Added dismiss and liveRegion to snackbar widget
- Updated custom painter semantics to handle image, liveRegion, toggle
- Updated relevant tests to use correct flag/action
Generated.xcconfig is only required at build time for iOS apps. In the
flutter create project template and example apps, Generated.xcconfig was
previously marked as a resource to be bundled into the built app.
This uses @kevmoo's completion package to do command line completion for flutter, and a new command "bash-completion" (with alias "zsh-completion") that will output the necessary shell script setup code, and adds the hidden command "completion" that does the actual completion.
Because it adds a dependency, I also had to do flutter update-packages --force-upgrade.
Fixes#18988.
* Revert "Revert "Roll engine to fed2ea458ed49088d33eddabc546ba56d600c717 (includes dart roll) (#19044)" (#19276)"
This reverts commit cf932490b7 as it also
includes fix for type error that broke tests.
* Add type cast for dart2 type checks.
* Move up to latest goldens
* Make inDirectory() type-parameterized.
* Add typecasting to transitions_perf_test.dart and microbenchmarks.
* Add boolean flag initialization in save_catalog_screenshots.dart
* Add type conversion to gallery transition test
All slivers must start with Sliver (or CupertinoSliver).
All widgets must have a key argument.
Also, some minor tweaks here and there to style and docs.
* Roll engine to rolled dart
Add connectionTimeout property to class that extends HttpOverrides.
Upgrade packages.
Add more type fixes.
Update goldens hash.
Add more type fixes.
Upgrade packages.
Fix tests.
Remove strong-mode from analysis options yaml file.
Increase dev/devicelab timeout from 2 to 10 seconds.
Added getVM to waitForViews. Fix type errors in compileExpression.
* Pick up engine revision with fix for microbenchmarks regression.
Increase default timeout from 20/30 to 60s.
Move the notch computation from the FAB to the BAB.
The notch in the BAB (bottom action bar) for the FAB (floating action button) was previously kept as part of the FAB's implementation. This was done to keep the shape of the FAB and the shape of the notch coupled.
That approach resulted in a somewhat complex and 'non Fluttery' mechanism for propagating the notch computation from the FAB to the BAB.
This CL uncouples the FAB and the notch computation.
With the new API the BAB computes its overall shape including the notch using a NotchedShape delegate.
This includes multiple breaking changes:
* Scaffold.setFloatingActionButtonNotchFor is deleted.
* The ComputeNotch type is deleted.
* The hasNotch property of BottomAppBar is deleted.
* The notchMargin property of FloatingActionButton is deleted.
Quick migration guide from the previous API:
| Previous API | New API |
| ------------------|-------------|
| BottomAppBar(hasNotch: false) | BottomAppBar() |
| Using a FloatingActionButton with: BottomAppBar() / BottomAppBar(hasNotch: true) | BottomAppBar(shape: CircularNotchedRectangle()) |
| Scaffold.setFloatingActionButtonNotchFor(..) | No longer supported |
This adds an HSLColor class which uses a perceptual color space based upon human perception of colored light (as opposed to HSV, which is based on pigment colors).
You can see the difference in the color spaces here: https://en.wikipedia.org/wiki/HSL_and_HSV
I also added a "within" matcher for both HSLColor and HSVColor that will check if the (floating point) color components are within a certain error.
And tests.
When setState() calls occur asynchronously, it's possible that the
Futures on which they're waiting don't complete until the widget is
offscreen. To avoid this, we check the widget is mounted before calling
setState().
fuchsia_tester.dart still assumes Dart 1. Previously, it ran tests directly
from source, flutter_platform.dart automatically runs a kernel compile when
operating in Dart 2 mode, but this assumes a functional Dart SDK is available
in the artifacts directly, and fuchsia_tester.dart mocks out the artifacts
directory with an empty temp dir.
Remaining work is:
1. Get the frontend server building as a dependency on Fuchsia.
2. Patch fuchsia_tester.dart to use a valid Dart SDK and frontend server.
This also reverts migration to Dart 2 typedef syntax.
This reverts commit 6c56bb2. (#18362)
This reverts commit 3daebd0. (#18316)
Now that Dart 1 is turned off, reapplying my change to turn on the prefer_generic_function_type_aliases analysis option, and fix all the typedefs to Dart 2 preferred syntax.
Also eliminated the unused analysis_options_repo.yaml file and turned on public_member_api_docs in analysys_options.yaml.
No logic changes, just changing the typedef syntax for all typedefs, and updating analysis options.
Now that we have thousands of tests, it doesn't make sense to display a separate line for each test. The result is just megabytes of logs that you have to scrub through to find error messages.
https://github.com/flutter/flutter/issues/17956
* Add a `debugInstrumentAction()` method that will wrap an action
in a stopwatch and print the time it took to run the action.
* Add a global `debugInstrumentationEnabled` that will control
whether `debugInstrumentAction()` does anything (even in debug
builds).
* Add some basic instrumentation to `registerServiceExtension()`
* Temporarily enable the `debugInstrumentationEnabled` flag in the
Gallery to give us better visibility into what's happening in
https://github.com/flutter/flutter/issues/17956
This optimizes the AnimatedSwitcher so that it tags the right widget with its keyed subtree, and avoids rebuilding the transition unnecessarily.
This significantly improves the performance of Chips (which uses AnimatedSwitcher to swap out it's avatar and delete icon children).
Our style guide says the k's are not necessary, and it seems like a good idea to make all the code be consistent on this.
Only naming changes to private vars: no logic changes.
I'm moving the assets in the assets-for-api-docs repo to a slightly different location to help with organization in that repo, so this PR points the doc URLs to the new location. The old assets won't be removed until this PR makes its way to the API docs website.
No documentation or code changes here, other than changing doc image URLs.
On smaller-screen devices such as the iPhone 4s, more scrolling is
required between the Material dialog demo and the Material pickers demo
than will happen within the default timeout.
When attempting to locate an element in the Flutter Gallery transition
performance driver test, attempt to scroll downward in increments of 25%
of the screen rather than by an absolute pixel amount.
This helps get the test passing on devices with relatively small screen
heights.
In order to avoid checking binaries into flutter/flutter,
this comparator can be used to retrieve golden files from
a sibling flutter/goldens repository.
https://github.com/flutter/flutter/issues/16859
* Configure Cirrus CI
* Read file directly instead of shelling a command
* Wait for all streams to finish
* Add LTR `textDirection`
Since `RenderFlex#_debugHasNecessaryDirections` requires it when `direction` is horizontal and there are multiple children.
New a11y traversal:
- sort direct sibling SemanticsNodes only
- use new sorting algorithm
- implement RTL
- test semantics in traversal order by default
- add AppBar traversal test
- breaking: remove nextNodeId/previousNodeId from the framework
- breaking: remove DebugSemanticsDumpOrder.geometricOrder
This chip demo is more interactive than the last one, trying to exercise all of the types of chips for a demo that lets you select different types of "chips" (like tortilla, wood, micro, etc.), and then filter them and select an action on them.
Changes since last roll:
```
ed303c628 Roll dart sdk again. Previous roll required 23ae4fa098 revert. (#4966)
8cd272733 Revert "Roll dart to 7764e6962e22afcf4b58c4e3cef3147330f3c884. (#4960)" (#4965)
9199b40f2 Revert "Support multiple shells in a single process. (#4932)" (#4964)
6baff4c82 Support multiple shells in a single process. (#4932)
31c5bb427 Roll dart to 7764e6962e22afcf4b58c4e3cef3147330f3c884. (#4960)
c8e4c6984 Avoid copying the contents of large platform message responses (#4947)
5ff527295 Update to use new vulkan GrBackendRenderTarget ctor. (#4962)
0c8993a1a Update to use new vulkan GrBackendRenderTarget ctor (part 2) (#4963)
132ebdda8 Revert "Roll src/third_party/skia/ 9874bf1bc..52e16d984 (135 commits) (#4958)" (#4961)
11882ab9e Roll src/third_party/skia/ 9874bf1bc..52e16d984 (135 commits) (#4958)
```
Add consts