Allow flutter SDK binary to be a symlink (#9924)

* Fix SDK path resolution when Flutter on PATH is a symlink

When running `dt update-flutter-sdk --update-on-path`, `FlutterSdk.findFromPathEnvironmentVariable` failed if `flutter` on PATH was a symlink (e.g. `/usr/local/bin/flutter`). It stripped `bin/flutter` from the unresolved symlink path, resulting in `/usr/local` being treated as the SDK root directory.

This change:
- Updates `FlutterSdk.findFromPath` to resolve symbolic links before determining the SDK root directory.
- Updates `UpdateFlutterSdkCommand` to use the remote returned by `findRemote` instead of hardcoding 'upstream'.
- Adds unit tests in `tool/test/model_test.dart` for `FlutterSdk.findFromPath`.

* Revert change to "findRemote" behavior

* Revert change to "findRemote" behavior

* Simplify symlink resolution using try-catch fallback in FlutterSdk.findFromPath

* Add release note for dt sync symlink fix

* format

* Revert changes to release notes

* extract repeated calls to path.dirname

* Avoid explicit variable type declaration.

* Remove ignore for DCM
2 files changed
tree: a619c3d04b55aea8e9a76b5d28fc9b8c3f3715a6
  1. .agents/
  2. .gemini/
  3. .github/
  4. .vscode/
  5. _markdown_images/
  6. docs/
  7. packages/
  8. third_party/
  9. tool/
  10. .gitattributes
  11. .gitignore
  12. AGENTS.md
  13. analysis_options.yaml
  14. AUTHORS
  15. BETA_TESTING.md
  16. CLAUDE.md
  17. CODE_OF_CONDUCT.md
  18. CODEOWNERS
  19. CONTRIBUTING.md
  20. DEBUGGING.md
  21. devtools_options.yaml
  22. DOCUMENTATION.md
  23. flutter-candidate.txt
  24. LICENSE
  25. pubspec.lock
  26. pubspec.yaml
  27. README.md
  28. STYLE.md
  29. TESTING.md
  30. TRIAGE.md
README.md

Dart & Flutter DevTools

Build Status OpenSSF Scorecard

What is this?

Dart & Flutter DevTools is a suite of performance tools for Dart and Flutter.

Getting started

For documentation on installing and trying out DevTools, please see our docs.

Contributing and development

Contributions welcome! See our contributing page for an overview of how to build and contribute to the project.

Terms and Privacy

By using Dart DevTools, you agree to the Google Terms of Service. To understand how we use data collected from this service, see the Google Privacy Policy.