Skip to content

Remove the hack used to get the runtimeType without using an additional class in key.dart#178219

Merged
auto-submit[bot] merged 5 commits into
flutter:masterfrom
AbdeMohlbi:experiment
Nov 14, 2025
Merged

Remove the hack used to get the runtimeType without using an additional class in key.dart#178219
auto-submit[bot] merged 5 commits into
flutter:masterfrom
AbdeMohlbi:experiment

Conversation

@AbdeMohlbi

@AbdeMohlbi AbdeMohlbi commented Nov 9, 2025

Copy link
Copy Markdown
Member

some context :
#33297 suggested that Type literals should support generics which means that this would become a valid syntax Type type = List<int>;.
the hack used here directly references to that issue :

// The crazy on the next line is a workaround for
// https://github.com/dart-lang/sdk/issues/33297
if (runtimeType == _TypeLiteral<ValueKey<T>>().type) {
return '[$valueString]';
}
return '[$T $valueString]';
}
}
class _TypeLiteral<T> {
Type get type => T;
}

because something like :

Type type = List<int>;
typedef MakeNullable<T> = T?;
typedef TypeOf<T> = T;

was not a valid syntax at the time of writing key.dart
since that issue is closed and those are valid syntax now , it is safe to remove this hack and use what @lrhn suggested in this comment

typedef TypeOf<T> = T;

in other words , before:

if (runtimeType == _TypeLiteral<ValueKey<T>>().type) {
}

class _TypeLiteral<T> {
  Type get type => T;
}

after:

if (runtimeType == _TypeOf<ValueKey<T>>) {
}

typedef TypeOf<T> = T;

Pre-launch Checklist

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

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@github-actions github-actions Bot added the framework flutter/packages/flutter repository. See also f: labels. label Nov 9, 2025
@AbdeMohlbi AbdeMohlbi changed the title WIP Remove the hack used to get the runtimeType without using an additional class Nov 11, 2025
@AbdeMohlbi AbdeMohlbi marked this pull request as ready for review November 11, 2025 11:49
@flutter-dashboard

Copy link
Copy Markdown

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@stuartmorgan-g

Copy link
Copy Markdown
Contributor

test-exempt: code refactor with no semantic change

@AbdeMohlbi AbdeMohlbi changed the title Remove the hack used to get the runtimeType without using an additional class Remove the hack used to get the runtimeType without using an additional class in key.dart Nov 11, 2025
@Piinks Piinks requested a review from victorsanni November 11, 2025 23:13
@victorsanni victorsanni added autosubmit Merge PR when tree becomes green via auto submit App and removed autosubmit Merge PR when tree becomes green via auto submit App labels Nov 12, 2025
@victorsanni victorsanni added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2025
@auto-submit auto-submit Bot added this pull request to the merge queue Nov 14, 2025
Merged via the queue into flutter:master with commit 4b55ea8 Nov 14, 2025
76 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 17, 2025
IvoneDjaja pushed a commit to IvoneDjaja/flutter that referenced this pull request Nov 22, 2025
…onal class in `key.dart` (flutter#178219)

some context :
[flutter#33297](dart-lang/sdk#33297) suggested that
`Type literals should support generics` which means that this would
become a valid syntax `Type type = List<int>;`.
the hack used here directly references to that issue :
https://github.com/flutter/flutter/blob/2981516d74bc2b3307a7386e7be906602b65cf22/packages/flutter/lib/src/foundation/key.dart#L109-L120
because something like :
```dart
Type type = List<int>;
typedef MakeNullable<T> = T?;
typedef TypeOf<T> = T;
```
was not a valid syntax at the time of writing `key.dart`
since that issue is closed and those are valid syntax now , it is safe
to remove this hack and use what @lrhn suggested in this
[comment](dart-lang/sdk#33297 (comment))
```dart
typedef TypeOf<T> = T;
```
in other words , before:
```dart
if (runtimeType == _TypeLiteral<ValueKey<T>>().type) {
}

class _TypeLiteral<T> {
  Type get type => T;
}
```
after:
```dart
if (runtimeType == _TypeOf<ValueKey<T>>) {
}

typedef TypeOf<T> = T;
```

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
- [ ] 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].

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
mboetger pushed a commit to mboetger/flutter that referenced this pull request Dec 2, 2025
…onal class in `key.dart` (flutter#178219)

some context :
[flutter#33297](dart-lang/sdk#33297) suggested that
`Type literals should support generics` which means that this would
become a valid syntax `Type type = List<int>;`.
the hack used here directly references to that issue :
https://github.com/flutter/flutter/blob/2981516d74bc2b3307a7386e7be906602b65cf22/packages/flutter/lib/src/foundation/key.dart#L109-L120
because something like :
```dart
Type type = List<int>;
typedef MakeNullable<T> = T?;
typedef TypeOf<T> = T;
```
was not a valid syntax at the time of writing `key.dart`
since that issue is closed and those are valid syntax now , it is safe
to remove this hack and use what @lrhn suggested in this
[comment](dart-lang/sdk#33297 (comment))
```dart
typedef TypeOf<T> = T;
```
in other words , before:
```dart
if (runtimeType == _TypeLiteral<ValueKey<T>>().type) {
}

class _TypeLiteral<T> {
  Type get type => T;
}
```
after:
```dart
if (runtimeType == _TypeOf<ValueKey<T>>) {
}

typedef TypeOf<T> = T;
```

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
- [ ] 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].

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
…onal class in `key.dart` (flutter#178219)

some context :
[flutter#33297](dart-lang/sdk#33297) suggested that
`Type literals should support generics` which means that this would
become a valid syntax `Type type = List<int>;`.
the hack used here directly references to that issue :
https://github.com/flutter/flutter/blob/2981516d74bc2b3307a7386e7be906602b65cf22/packages/flutter/lib/src/foundation/key.dart#L109-L120
because something like :
```dart
Type type = List<int>;
typedef MakeNullable<T> = T?;
typedef TypeOf<T> = T;
```
was not a valid syntax at the time of writing `key.dart`
since that issue is closed and those are valid syntax now , it is safe
to remove this hack and use what @lrhn suggested in this
[comment](dart-lang/sdk#33297 (comment))
```dart
typedef TypeOf<T> = T;
```
in other words , before:
```dart
if (runtimeType == _TypeLiteral<ValueKey<T>>().type) {
}

class _TypeLiteral<T> {
  Type get type => T;
}
```
after:
```dart
if (runtimeType == _TypeOf<ValueKey<T>>) {
}

typedef TypeOf<T> = T;
```

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
- [ ] 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].

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants