commit | 1d0bb4f85870df850a060d1848804a875fa9902f | [log] [tgz] |
---|---|---|
author | Mouad Debbar <mdebbar@google.com> | Mon Apr 15 15:51:18 2024 -0400 |
committer | GitHub <noreply@github.com> | Mon Apr 15 19:51:18 2024 +0000 |
tree | 89154d937201139c83d9306c4cd1a2624dceec97 | |
parent | 6116ae586aebb9dfffe97c70224b4f73f5b19080 [diff] |
[url_launcher][web] Link should work when triggered by keyboard (#6505) ### Background You can think of the `Link` widget (on the web) as two components working together: 1. The `<a>` element created by the `Link` widget. This is essential to make all browser interactions feel natural (e.g. context menu, cmd+click, etc). 2. The children of `Link` widget. These are the widgets visible to the user (e.g. a button or a hyperlink text) and the user can interact with them the same way they would interact with any Flutter widgets (focus, pointer click, etc). In order for the Link widget to navigate to a URI, the two components from above have to indicate their intent of navigation: 1. Some widget has to call `followLink` to indicate that the click successfully landed (i.e. hit tested) on it. E.g. if it's a button, then the `onPressed` callback should lead to a call to the Link's `followLink`. 2. The `<a>` element also has to receive an event to initiate the navigation. ### The PR We used to only handle click events on the `<a>` element, and no handling for keyboard events was present. So when a user tabs their way to the Link, then hits "Enter", the following happens: 1. The focused widget (e.g. button) that received the "Enter" will correctly indicate its intent to navigate by calling `followLink`. 2. The intent from the `<a>` element is lost because we were only handling clicks and not keyboard events. This PR adds handling of keyboard events so that it works similar to clicks. Fixes https://github.com/flutter/flutter/issues/97863
This repo is a companion repo to the main flutter repo. It contains the source code for Flutter's first-party packages (i.e., packages developed by the core Flutter team). Check the packages
directory to see all packages.
These packages are also available on pub.
Please file any issues, bugs, or feature requests in the main flutter repo. Issues pertaining to this repository are labeled “package”.
If you wish to contribute a new package to the Flutter ecosystem, please see the documentation for developing packages. You can store your package source code in any GitHub repository (the present repo is only intended for packages developed by the core Flutter team). Once your package is ready you can publish to the pub repository.
If you wish to contribute a change to any of the existing packages in this repo, please review our contribution guide, and send a pull request.
These are the packages hosted in this repository: