Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement url support for RouteInformation and didPushRouteInformation #119968

Merged
merged 9 commits into from Apr 24, 2023

Conversation

chunhtai
Copy link
Contributor

@chunhtai chunhtai commented Feb 3, 2023

Related #100624

The goal is to make sure the engine can send a location string in either the existing format or a complete uri string to the framework, and the framework will still work as usual.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@flutter-dashboard flutter-dashboard bot added f: cupertino flutter/packages/flutter/cupertino repository f: material design flutter/packages/flutter/material repository. f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels. labels Feb 3, 2023
const RouteInformation({this.location, this.state});
const RouteInformation({
@Deprecated(
'Passes Uri.parse(location) to uri parameter instead. '
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
'Passes Uri.parse(location) to uri parameter instead. '
'Pass Uri.parse(location) to uri parameter instead. '

const RouteInformation({
@Deprecated(
'Passes Uri.parse(location) to uri parameter instead. '
'MaterialApp never introduces its own MediaQuery; the View widget takes care of that. '
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update this?

packages/flutter/lib/src/widgets/router.dart Show resolved Hide resolved
Comment on lines 79 to 80
/// The string is usually in the format of multiple string identifiers with
/// slashes in between. ex: `/`, `/path`, `/path/to/the/app`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this still make sense now that the type is Uri and not String?

@@ -647,7 +647,7 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
if (
await observer.didPushRouteInformation(
RouteInformation(
location: routeArguments['location'] as String,
uri: Uri.parse(routeArguments['location'] as String),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the purpose of this PR? It seems like all it effectively does is parse the string here into an URI, only to convert it back to a string above in line 91. It never does anything useful with the URI representation?

(Or is this just meant as a check that location has proper URI format? In that case, should we just do the parsing in an assert? Or is this user-provided input and we need to always verify this even in release mode?)

Copy link
Contributor Author

@chunhtai chunhtai Feb 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose is to prepare this api so that engine can start sending full uri like http://www.mywebsite.com/mypath. This is important for apps that want to handle deeplinks from different web domains.

The line 91 is for backward compatibility that does not use router API.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, but before and after this change the engine is always just sending a string. The only difference is that with this change the string is parsed into an URI representation on the framework side. And just from looking at this PR its not clear why we need to do this parsing. All I see is strings getting parsed into URIs and turned back into strings. We never do anything interesting with the URI representation. So, why this change? What does this enable that we couldn't do before? Or do we just want to ensure that what the engine sends over MUST be URI-parsable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pr also add new getter RouteInformation.uri.

It lets developer to query RouteInformation.uri.scheme or RouteInformation.uri.host when they write their routing code.

@@ -42,15 +42,51 @@ class RouteInformation {
/// Creates a route information object.
///
/// The arguments may be null.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is no longer true, either uri or location must be non-null.

@chunhtai
Copy link
Contributor Author

chunhtai commented Feb 8, 2023

The linux flutter_plugins ci is blocked on flutter/plugins#7133, please ignore

return didPushRoute(routeInformation.location!);
final Uri uri = routeInformation.uri;
return didPushRoute(
Uri.decodeComponent(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this need to be decoded? Doesn't Uri.toString below already produce something that is "decoded"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uri.parse will encode the string, so if you do http://host.com/my path The path will be /my%20path which will break the existing code

@@ -647,7 +656,7 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
if (
await observer.didPushRouteInformation(
RouteInformation(
location: routeArguments['location'] as String,
uri: Uri.parse(routeArguments['location'] as String),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move the parsing above the for loop so it only happens once instead of over and over again for every observer?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this?

@@ -647,7 +647,7 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
if (
await observer.didPushRouteInformation(
RouteInformation(
location: routeArguments['location'] as String,
uri: Uri.parse(routeArguments['location'] as String),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, but before and after this change the engine is always just sending a string. The only difference is that with this change the string is parsed into an URI representation on the framework side. And just from looking at this PR its not clear why we need to do this parsing. All I see is strings getting parsed into URIs and turned back into strings. We never do anything interesting with the URI representation. So, why this change? What does this enable that we couldn't do before? Or do we just want to ensure that what the engine sends over MUST be URI-parsable?

Comment on lines 93 to 99
Uri.decodeComponent(
Uri(
path: uri.path.isEmpty ? '/' : uri.path,
queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll,
fragment: uri.fragment.isEmpty ? null : uri.fragment,
).toString(),
),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, what is the purpose of all of this? Why is this not just didPushRoute(routeInformation.uri.toString())?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The goal is that Android and iOS can start sending
http://mydomain.com/mypath instead of just /mypath when it is deeplinked without breaking the existing code.

const RouteInformation({
@Deprecated(
'Pass Uri.parse(location) to uri parameter instead. '
'This parameter is superseded by the uri parameter. '
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe just remove the second line? It just repeats what the first line is already saying. Ideally, the second line should give a short explanation of why uri is replacing location.


/// The location of the application.
///
/// The string is usually in the format of multiple string identifiers with
/// slashes in between. ex: `/`, `/path`, `/path/to/the/app`.
@Deprecated(
'Use uri instead. '
'This getter is superseded by the uri getter. '
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Comment on lines +76 to +75
return Uri.decodeComponent(
Uri(
path: uri.path.isEmpty ? '/' : uri.path,
queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll,
fragment: uri.fragment.isEmpty ? null : uri.fragment,
).toString(),
);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question as above.

@goderbauer
Copy link
Member

This seems just hack-y. On the one hand, it tries to pretend that everything is an URI now. On the other hand, it very much still relies on the fact that sometimes it isn't (_getLocationFromUri). This is just weird and seems super-hard to properly reason about.

@chunhtai
Copy link
Contributor Author

chunhtai commented Feb 9, 2023

Let's define location = _getLocationFromUri(uri);

Only didpushRoute and RouteInformation.location use location, and RouteInformation.location is about to be deprecated, so basically only didpushRoute uses it. everything else should be uri otherwise.

The engine may send both location and uri, but they would be parse as if they are both uri, and I think location is just an uri without scheme and host.

What's other alternative? We can introduce a new RouteUri class and have a set of new method for didPushRouteUri, but I think that is redundent since RouteInformation is a class and can be extends to carry more data already.

@jjoelson
Copy link

jjoelson commented Mar 1, 2023

Hi @chunhtai! I have a use-case in a mobile app where we're using a NavigatorObserver to report analytics whenever navigation changes, and the analytics team would like us to report if a particular navigation change was triggered by a deep link and if so then what was the full URL of the deep link. Currently we have to use a plugin like uni_links to gain access to the full URL. Do you think this change would enable us to access the full URL in our RouteInformationParser and switch to Flutter's built-in deep link handling?

@chunhtai
Copy link
Contributor Author

chunhtai commented Mar 2, 2023

@jjoelson yes that should be supported once the github issue is supported

@flutter-dashboard
Copy link

This pull request executed golden file tests, but it has not been updated in a while (20+ days). Test results from Gold expire after as many days, so this pull request will need to be updated with a fresh commit in order to get results from Gold.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@chunhtai
Copy link
Contributor Author

will write a migration guide once this is approved

@@ -647,7 +656,7 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
if (
await observer.didPushRouteInformation(
RouteInformation(
location: routeArguments['location'] as String,
uri: Uri.parse(routeArguments['location'] as String),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this?

@@ -1496,7 +1496,16 @@ class _WidgetsAppState extends State<WidgetsApp> with WidgetsBindingObserver {
if (navigator == null) {
return false;
}
navigator.pushNamed(route);
final Uri uri = routeInformation.uri;
navigator.pushNamed(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why can we just ignore all other pieces of the URI here? Should we assert that those are empty?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Navigator.pushNamed only handles path after the hostname. The host can be non-empty here, but Navigator API doesn't care about host.

if (
await observer.didPushRouteInformation(
RouteInformation(
uri: Uri.parse(route),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parse this once outside of the for loop?

Copy link
Member

@goderbauer goderbauer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

chunhtai added a commit to flutter/website that referenced this pull request Apr 3, 2023
Migration guide for flutter/flutter#119968

## Presubmit checklist
- [ ] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [ ] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [ ] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

---------

Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Apr 19, 2023
@chunhtai
Copy link
Contributor Author

g3fix cl/525552584

@chunhtai chunhtai added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 24, 2023
@auto-submit auto-submit bot merged commit 3b4ac4d into flutter:master Apr 24, 2023
71 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 24, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 24, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 25, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 25, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 25, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 26, 2023
stuartmorgan pushed a commit to flutter/packages that referenced this pull request Apr 28, 2023
Roll Flutter from c9004ff822cf to 66fa4c5d301c (68 revisions)

flutter/flutter@c9004ff...66fa4c5

2023-04-26 zanderso@users.noreply.github.com Remove web compile
benchmarks that specify an attached device (flutter/flutter#125559)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
f75908135e10 to f125a54f5a57 (1 revision) (flutter/flutter#125560)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
c9db1587f207 to f75908135e10 (1 revision) (flutter/flutter#125558)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
58a5a1e3f2c1 to c9db1587f207 (1 revision) (flutter/flutter#125555)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
321f8015b9c2 to 58a5a1e3f2c1 (1 revision) (flutter/flutter#125552)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
87f5f4e939cf to 321f8015b9c2 (1 revision) (flutter/flutter#125549)
2023-04-26 goderbauer@google.com Update prefer_final_parameters comment
(flutter/flutter#125465)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
706c023df44b to 87f5f4e939cf (1 revision) (flutter/flutter#125539)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
7b385abd18a2 to 706c023df44b (1 revision) (flutter/flutter#125536)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
610c57781b47 to 7b385abd18a2 (1 revision) (flutter/flutter#125533)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
b3cbf0678487 to 610c57781b47 (1 revision) (flutter/flutter#125531)
2023-04-26 zanderso@users.noreply.github.com Add hostonly web compile
size benchmarks (flutter/flutter#125518)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
34ece7a4abac to b3cbf0678487 (6 revisions) (flutter/flutter#125529)
2023-04-25 thkim1011@users.noreply.github.com Handle dollar signs
properly when generating localizations (flutter/flutter#125514)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
6d798393a15a to 34ece7a4abac (1 revision) (flutter/flutter#125516)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
469e5b409686 to 6d798393a15a (2 revisions) (flutter/flutter#125513)
2023-04-25 47866232+chunhtai@users.noreply.github.com Adds selected
semantics flag to radio button for Apple devices
(flutter/flutter#125499)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
0e236982086b to 469e5b409686 (1 revision) (flutter/flutter#125510)
2023-04-25 58529443+srujzs@users.noreply.github.com Relabel JSFunction
as JSExportedDartFunction (flutter/flutter#125453)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
60c4e61416cd to 0e236982086b (2 revisions) (flutter/flutter#125504)
2023-04-25 jmccandless@google.com iOS TextField spell check style
(flutter/flutter#125432)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
308bce499087 to 60c4e61416cd (1 revision) (flutter/flutter#125490)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
54ddef68b124 to 308bce499087 (1 revision) (flutter/flutter#125485)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
307416f43b5a to 54ddef68b124 (1 revision) (flutter/flutter#125481)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
232810b36671 to 307416f43b5a (1 revision) (flutter/flutter#125475)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
1c4b6c0cb862 to 232810b36671 (2 revisions) (flutter/flutter#125472)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
a26a479e86b3 to 1c4b6c0cb862 (1 revision) (flutter/flutter#125463)
2023-04-25 tessertaha@gmail.com Fix `SliverAppBar.medium` &
`SliverAppBar.large` text scale (flutter/flutter#125038)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
3f4116c225e8 to a26a479e86b3 (1 revision) (flutter/flutter#125459)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
64882f4b7371 to 3f4116c225e8 (2 revisions) (flutter/flutter#125458)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
8fe8e94c02fc to 64882f4b7371 (1 revision) (flutter/flutter#125454)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
5fbde6c0fc57 to 8fe8e94c02fc (10 revisions) (flutter/flutter#125452)
2023-04-24 tessertaha@gmail.com Add Sliders to `macrobenchmarks`
(flutter/flutter#125296)
2023-04-24 pateltirth454@gmail.com [date_picker] [date_range_picker] add
properties to change switch-to icons (flutter/flutter#124881)
2023-04-24 thkim1011@users.noreply.github.com Sliver Constrained Cross
Axis (flutter/flutter#125239)
2023-04-24 kevmoo@users.noreply.github.com tool: Move cdKey to
CustomDimensionsEnum (flutter/flutter#125335)
2023-04-24 bernaferrari2@gmail.com Add `borderRadius` to
LinearProgressIndicator (flutter/flutter#123517)
2023-04-24 58529443+srujzs@users.noreply.github.com Fix JS types in
_test_http_request.dart (flutter/flutter#125220)
2023-04-24 tessertaha@gmail.com Fix `OutlinedButton`, `TextButton`, and
`IconButton` throw exception when passing only one cursor to `styleFrom`
(flutter/flutter#125204)
2023-04-24 magder@google.com Swap some iOS TESTOWNERS
(flutter/flutter#125340)
2023-04-24 rmolivares@renzo-olivares.dev Fix iOS touch drag behavior
(flutter/flutter#125169)
2023-04-24 54558023+keyonghan@users.noreply.github.com Mark
module_test_ios flaky (flutter/flutter#125426)
2023-04-24 47866232+chunhtai@users.noreply.github.com Implement url
support for RouteInformation and didPushRouteInformation
(flutter/flutter#119968)
2023-04-24 kevmoo@users.noreply.github.com [tool,web] Include more info
URI on Wasm init failure (flutter/flutter#125312)
2023-04-24 magder@google.com Do not run
`windows_home_scroll_perf__timeline_summary` benchmark in presubmit
(flutter/flutter#125343)
2023-04-24 5236035+fzyzcjy@users.noreply.github.com Tiny fix doc
pointing to incorrect widget confusing the readers
(flutter/flutter#125394)
...
nploi pushed a commit to nploi/packages that referenced this pull request Jul 16, 2023
nploi pushed a commit to nploi/packages that referenced this pull request Jul 16, 2023
…r#3830)

Roll Flutter from c9004ff822cf to 66fa4c5d301c (68 revisions)

flutter/flutter@c9004ff...66fa4c5

2023-04-26 zanderso@users.noreply.github.com Remove web compile
benchmarks that specify an attached device (flutter/flutter#125559)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
f75908135e10 to f125a54f5a57 (1 revision) (flutter/flutter#125560)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
c9db1587f207 to f75908135e10 (1 revision) (flutter/flutter#125558)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
58a5a1e3f2c1 to c9db1587f207 (1 revision) (flutter/flutter#125555)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
321f8015b9c2 to 58a5a1e3f2c1 (1 revision) (flutter/flutter#125552)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
87f5f4e939cf to 321f8015b9c2 (1 revision) (flutter/flutter#125549)
2023-04-26 goderbauer@google.com Update prefer_final_parameters comment
(flutter/flutter#125465)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
706c023df44b to 87f5f4e939cf (1 revision) (flutter/flutter#125539)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
7b385abd18a2 to 706c023df44b (1 revision) (flutter/flutter#125536)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
610c57781b47 to 7b385abd18a2 (1 revision) (flutter/flutter#125533)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
b3cbf0678487 to 610c57781b47 (1 revision) (flutter/flutter#125531)
2023-04-26 zanderso@users.noreply.github.com Add hostonly web compile
size benchmarks (flutter/flutter#125518)
2023-04-26 engine-flutter-autoroll@skia.org Roll Flutter Engine from
34ece7a4abac to b3cbf0678487 (6 revisions) (flutter/flutter#125529)
2023-04-25 thkim1011@users.noreply.github.com Handle dollar signs
properly when generating localizations (flutter/flutter#125514)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
6d798393a15a to 34ece7a4abac (1 revision) (flutter/flutter#125516)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
469e5b409686 to 6d798393a15a (2 revisions) (flutter/flutter#125513)
2023-04-25 47866232+chunhtai@users.noreply.github.com Adds selected
semantics flag to radio button for Apple devices
(flutter/flutter#125499)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
0e236982086b to 469e5b409686 (1 revision) (flutter/flutter#125510)
2023-04-25 58529443+srujzs@users.noreply.github.com Relabel JSFunction
as JSExportedDartFunction (flutter/flutter#125453)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
60c4e61416cd to 0e236982086b (2 revisions) (flutter/flutter#125504)
2023-04-25 jmccandless@google.com iOS TextField spell check style
(flutter/flutter#125432)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
308bce499087 to 60c4e61416cd (1 revision) (flutter/flutter#125490)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
54ddef68b124 to 308bce499087 (1 revision) (flutter/flutter#125485)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
307416f43b5a to 54ddef68b124 (1 revision) (flutter/flutter#125481)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
232810b36671 to 307416f43b5a (1 revision) (flutter/flutter#125475)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
1c4b6c0cb862 to 232810b36671 (2 revisions) (flutter/flutter#125472)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
a26a479e86b3 to 1c4b6c0cb862 (1 revision) (flutter/flutter#125463)
2023-04-25 tessertaha@gmail.com Fix `SliverAppBar.medium` &
`SliverAppBar.large` text scale (flutter/flutter#125038)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
3f4116c225e8 to a26a479e86b3 (1 revision) (flutter/flutter#125459)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
64882f4b7371 to 3f4116c225e8 (2 revisions) (flutter/flutter#125458)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
8fe8e94c02fc to 64882f4b7371 (1 revision) (flutter/flutter#125454)
2023-04-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from
5fbde6c0fc57 to 8fe8e94c02fc (10 revisions) (flutter/flutter#125452)
2023-04-24 tessertaha@gmail.com Add Sliders to `macrobenchmarks`
(flutter/flutter#125296)
2023-04-24 pateltirth454@gmail.com [date_picker] [date_range_picker] add
properties to change switch-to icons (flutter/flutter#124881)
2023-04-24 thkim1011@users.noreply.github.com Sliver Constrained Cross
Axis (flutter/flutter#125239)
2023-04-24 kevmoo@users.noreply.github.com tool: Move cdKey to
CustomDimensionsEnum (flutter/flutter#125335)
2023-04-24 bernaferrari2@gmail.com Add `borderRadius` to
LinearProgressIndicator (flutter/flutter#123517)
2023-04-24 58529443+srujzs@users.noreply.github.com Fix JS types in
_test_http_request.dart (flutter/flutter#125220)
2023-04-24 tessertaha@gmail.com Fix `OutlinedButton`, `TextButton`, and
`IconButton` throw exception when passing only one cursor to `styleFrom`
(flutter/flutter#125204)
2023-04-24 magder@google.com Swap some iOS TESTOWNERS
(flutter/flutter#125340)
2023-04-24 rmolivares@renzo-olivares.dev Fix iOS touch drag behavior
(flutter/flutter#125169)
2023-04-24 54558023+keyonghan@users.noreply.github.com Mark
module_test_ios flaky (flutter/flutter#125426)
2023-04-24 47866232+chunhtai@users.noreply.github.com Implement url
support for RouteInformation and didPushRouteInformation
(flutter/flutter#119968)
2023-04-24 kevmoo@users.noreply.github.com [tool,web] Include more info
URI on Wasm init failure (flutter/flutter#125312)
2023-04-24 magder@google.com Do not run
`windows_home_scroll_perf__timeline_summary` benchmark in presubmit
(flutter/flutter#125343)
2023-04-24 5236035+fzyzcjy@users.noreply.github.com Tiny fix doc
pointing to incorrect widget confusing the readers
(flutter/flutter#125394)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App f: cupertino flutter/packages/flutter/cupertino repository f: material design flutter/packages/flutter/material repository. f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants