Repository: flutter
Issue: onKey handler getting called on multiple different focuses when the handler changes the focus on desktop
Labels: a: text input,engine,a: desktop,has reproducible steps,P2,found in release: 2.2,found in release: 2.3,team-text-input,triaged-text-input

<!-- Thank you for using Flutter!

     If you are looking for support, please check out our documentation
     or consider asking a question on Stack Overflow:
      * https://flutter.dev/
      * https://api.flutter.dev/
      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent

     If you have found a bug or if our documentation doesn't have an answer
     to what you're looking for, then fill out the template below. Please read
     our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
-->

## Steps to Reproduce

<!-- You must include full steps to reproduce so that we can reproduce the problem. -->

1. Run `flutter create bug`.
2. Update the files as follows:
`lib/main.dart` should become:
<details> 
<summary>minimal code sample</summary> 

```dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Double Focus Jump Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Double Focus Jump Demo'),
        ),
        body: Column(
          children: <Widget>[
            MyTextField(),
            MyTextField(),
            MyTextField(),
          ],
        ),
      ),
    );
  }
}

class MyTextField extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Focus(
      skipTraversal: true,
      onKey: (focus, keyEvent) {
        if (keyEvent.logicalKey == LogicalKeyboardKey.enter) {
          focus.nextFocus();
          return KeyEventResult.handled;
        }
        return KeyEventResult.ignored;
      },
      child: TextFormField(),
    );
  }
}
``` 

</details>

3. Focus one of the text fields, then hit enter. <!-- describe how to reproduce the problem -->

**Expected results:** The focus will pass to the next text field. <!-- what did you want to see? -->

**Actual results:** It passes to the next text field for a split second and then skips again to the next one. It always does exactly that: move to the next text field for a split second, then move to the one after. <!-- what did you see? -->

<details>
  <summary>Logs</summary>

<!--
      Run your application with `flutter run --verbose` and attach all the
      log output below between the lines with the backticks. If there is an
      exception, please see if the error message includes enough information
      to explain how to solve the issue.
-->

```
[  +57 ms] executing: uname -m
[  +27 ms] Exit code 0 from: uname -m
[        ] x86_64
[   +5 ms] executing: [/home/arrow/install/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +4 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] d79295af24c3ed621c33713ecda14ad196fd9c31
[        ] executing: [/home/arrow/install/flutter/] git tag --points-at d79295af24c3ed621c33713ecda14ad196fd9c31
[  +11 ms] Exit code 0 from: git tag --points-at d79295af24c3ed621c33713ecda14ad196fd9c31
[        ] 2.2.2
[   +4 ms] executing: [/home/arrow/install/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[   +4 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [/home/arrow/install/flutter/] git ls-remote --get-url origin
[   +3 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[  +67 ms] Unable to locate an Android SDK.
[   +6 ms] executing: [/home/arrow/install/flutter/] git rev-parse --abbrev-ref HEAD
[   +4 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[  +65 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +79 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +58 ms] Skipping pub get: version match.
[  +92 ms] Generating /home/arrow/notes-app/scratch/double_text_jump/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[  +72 ms] Initializing file store
[   +6 ms] Skipping target: gen_localizations
[   +5 ms] complete
[   +4 ms] Launching lib/main.dart on Linux in debug mode...
[   +4 ms] /home/arrow/install/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /home/arrow/install/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot --sdk-root
/home/arrow/install/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true
--output-dill /tmp/flutter_tools.OZVGLX/flutter_tool.WBMHYQ/app.dill --packages /home/arrow/notes-app/scratch/double_text_jump/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false
--enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build/3c113a45063dc6628e68a4111abcacad.cache.dill.track.dill
--enable-experiment=alternative-invalidation-strategy
[  +22 ms] Building Linux application...
[  +17 ms] <- compile package:double_text_jump/main.dart
[   +1 ms] executing: [build/linux/x64/debug/] cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLUTTER_TARGET_PLATFORM=linux-x64 /home/arrow/notes-app/scratch/double_text_jump/linux
[  +31 ms] -- Configuring done
[        ] -- Generating done
[        ] -- Build files have been written to: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug
[   +5 ms] executing: ninja -C build/linux/x64/debug install
[   +9 ms] ninja: Entering directory `build/linux/x64/debug'
[+12044 ms] [1/5] Generating /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/libflutter_linux_gtk.so,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h, /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_engine.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h, /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_method_call.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h, /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_method_response.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h, /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_value.h,
/home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/fl_view.h, /home/arrow/notes-app/scratch/double_text_jump/linux/flutter/ephemeral/flutter_linux/flutter_linux.h, _phony_
[   +3 ms] [  +57 ms] executing: uname -m
[        ] [  +34 ms] Exit code 0 from: uname -m
[        ] [        ] x86_64
[        ] [   +5 ms] executing: [/home/arrow/install/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] [   +4 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] [        ] d79295af24c3ed621c33713ecda14ad196fd9c31
[        ] [        ] executing: [/home/arrow/install/flutter/] git tag --points-at d79295af24c3ed621c33713ecda14ad196fd9c31
[        ] [  +11 ms] Exit code 0 from: git tag --points-at d79295af24c3ed621c33713ecda14ad196fd9c31
[        ] [        ] 2.2.2
[        ] [   +4 ms] executing: [/home/arrow/install/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[        ] [   +4 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] [        ] origin/stable
[        ] [        ] executing: [/home/arrow/install/flutter/] git ls-remote --get-url origin
[        ] [   +4 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] [        ] https://github.com/flutter/flutter.git
[        ] [  +45 ms] Unable to locate an Android SDK.
[        ] [   +6 ms] executing: [/home/arrow/install/flutter/] git rev-parse --abbrev-ref HEAD
[        ] [   +4 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] [        ] stable
[        ] [  +43 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [   +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [  +78 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[        ] [  +28 ms] Initializing file store
[        ] [   +4 ms] Done initializing file store
[        ] [  +29 ms] Skipping target: gen_localizations
[        ] [+1525 ms] Skipping target: unpack_linux
[        ] [ +368 ms] kernel_snapshot: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /home/arrow/notes-app/scratch/double_text_jump/lib/main.dart}
[   +2 ms] [   +7 ms] /home/arrow/install/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /home/arrow/install/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot --sdk-root
/home/arrow/install/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_WEB_AUTO_DETECT=true -Ddart.vm.profile=false
-Ddart.vm.product=false --enable-asserts --track-widget-creation --packages /home/arrow/notes-app/scratch/double_text_jump/.dart_tool/package_config.json --output-dill
/home/arrow/notes-app/scratch/double_text_jump/.dart_tool/flutter_build/627e724dbd84e611db6b5e918396ed41/app.dill --depfile
/home/arrow/notes-app/scratch/double_text_jump/.dart_tool/flutter_build/627e724dbd84e611db6b5e918396ed41/kernel_snapshot.d package:double_text_jump/main.dart
[   +2 ms] [+8350 ms] kernel_snapshot: Complete
[        ] [ +503 ms] debug_bundle_linux-x64_assets: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents:
/home/arrow/notes-app/scratch/double_text_jump/.dart_tool/flutter_build/627e724dbd84e611db6b5e918396ed41/app.dill}
[        ] [ +112 ms] debug_bundle_linux-x64_assets: Complete
[        ] [ +234 ms] Persisting file store
[        ] [   +5 ms] Done persisting file store
[        ] [   +3 ms] build succeeded.
[        ] [   +7 ms] "flutter assemble" took 11,276ms.
[        ] [  +76 ms] ensureAnalyticsSent: 69ms
[        ] [   +3 ms] Running shutdown hooks
[        ] [        ] Shutdown hooks complete
[        ] [   +1 ms] exiting with code 0
[ +439 ms] [2/5] Building CXX object CMakeFiles/double_text_jump.dir/flutter/generated_plugin_registrant.cc.o
[  +19 ms] [3/5] Building CXX object CMakeFiles/double_text_jump.dir/my_application.cc.o
[  +34 ms] [4/5] Linking CXX executable intermediates_do_not_run/double_text_jump
[        ] [4/5] Install the project...
[   +7 ms] -- Install configuration: "Debug"
[  +14 ms] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/double_text_jump
[        ] -- Set runtime path of "/home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/double_text_jump" to "$ORIGIN/lib"
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/icudtl.dat
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/lib/libflutter_linux_gtk.so
[  +91 ms] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.json
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/version.json
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/kernel_blob.bin
[  +30 ms] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/packages
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/NOTICES
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/FontManifest.json
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/fonts
[        ] -- Installing: /home/arrow/notes-app/scratch/double_text_jump/build/linux/x64/debug/bundle/data/flutter_assets/fonts/MaterialIcons-Regular.otf
[  +10 ms] Building Linux application... (completed in 12.8s)
[ +165 ms] Observatory URL on device: http://127.0.0.1:45719/rCJqdDaDT-M=/
[   +4 ms] Caching compiled dill
[  +30 ms] Connecting to service protocol: http://127.0.0.1:45719/rCJqdDaDT-M=/
[ +159 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:45719/rCJqdDaDT-M=/.
[  +53 ms] DDS is listening at http://127.0.0.1:34713/h1y0WvTJRF0=/.
[  +45 ms] Successfully connected to service protocol: http://127.0.0.1:45719/rCJqdDaDT-M=/
[  +13 ms] DevFS: Creating new filesystem on the device (null)
[  +12 ms] DevFS: Created new filesystem on the device (file:///tmp/double_text_jumpQGVHVS/double_text_jump/)
[   +1 ms] Updating assets
[  +62 ms] Syncing files to device Linux...
[   +1 ms] <- reset
[        ] Compiling dart to kernel with 0 updated files
[   +1 ms] <- recompile package:double_text_jump/main.dart 01339ad1-84eb-4061-bd9d-f24a0e6a89a9
[        ] <- 01339ad1-84eb-4061-bd9d-f24a0e6a89a9
[  +80 ms] Updating files.
[        ] DevFS: Sync finished
[        ] Syncing files to device Linux... (completed in 84ms)
[        ] Synced 0.0MB.
[        ] <- accept
[  +11 ms] Connected to _flutterView/0x5c0c20.
[   +2 ms] Flutter run key commands.
[   +1 ms] r Hot reload. 🔥🔥🔥
[   +1 ms] R Hot restart.
[        ] h Repeat this help message.
[        ] d Detach (terminate "flutter run" but leave application running).
[        ] c Clear the screen
[        ] q Quit (terminate the application on the device).
[        ] 💪 Running with sound null safety 💪
[        ] An Observatory debugger and profiler on Linux is available at: http://127.0.0.1:34713/h1y0WvTJRF0=/
[ +466 ms] The Flutter DevTools debugger and profiler on Linux is available at: http://127.0.0.1:9100?uri=http%3A%2F%2F127.0.0.1%3A34713%2Fh1y0WvTJRF0%3D%2F
[+4975 ms] Service protocol connection closed.
[   +1 ms] Lost connection to device.
[   +3 ms] DevFS: Deleting filesystem on the device (file:///tmp/double_text_jumpQGVHVS/double_text_jump/)
[ +252 ms] Ignored error while cleaning up DevFS: TimeoutException after 0:00:00.250000: Future not completed
[   +3 ms] "flutter run" took 19,517ms.
[  +71 ms] ensureAnalyticsSent: 65ms
[        ] Running shutdown hooks
[        ] Shutdown hooks complete
[        ] exiting with code 0
```

<!--
     Run `flutter analyze` and attach any output of that command below.
     If there are any analysis errors, try resolving them before filing this issue.
-->

```
Analyzing double_text_jump...                                           
No issues found! (ran in 1.1s)
```

<!-- Finally, paste the output of running `flutter doctor -v` here. -->

```
[✓] Flutter (Channel stable, 2.2.2, on Linux, locale en_CA.UTF-8)
    • Flutter version 2.2.2 at /home/arrow/install/flutter
    • Framework revision d79295af24 (3 weeks ago), 2021-06-11 08:56:01 -0700
    • Engine revision 91c9fc8fe0
    • Dart version 2.13.3

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.


[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Linux toolchain - develop for Linux desktop
    • clang version 10.0.0-4ubuntu1
    • cmake version 3.16.3
    • ninja version 1.10.0
    • pkg-config version 0.29.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[✓] VS Code (version 1.52.1)
    • VS Code at /usr/share/code
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • Linux (desktop) • linux • linux-x64 • Linux

! Doctor found issues in 3 categories.

```

</details>