Prefer using non nullable opacityAnimation property (#164795)

`opacityAnimation` of `DropdownMenuItemButton` is always set with a
non-nullable value. Therefore, I think it's a good idea to use `late
CurvedAnimation` instead of `CurvedAnimation?` and avoid the unnecessary
null assertion operator (!)

## 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 listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

<!-- 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
This commit is contained in:
Ahmed Elsayed 2025-03-24 09:00:30 +02:00 committed by GitHub
parent b61311a7a8
commit 0ab39c3278
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -131,7 +131,7 @@ class _DropdownMenuItemButton<T> extends StatefulWidget {
}
class _DropdownMenuItemButtonState<T> extends State<_DropdownMenuItemButton<T>> {
CurvedAnimation? _opacityAnimation;
late CurvedAnimation _opacityAnimation;
@override
void initState() {
@ -146,12 +146,12 @@ class _DropdownMenuItemButtonState<T> extends State<_DropdownMenuItemButton<T>>
oldWidget.route.animation != widget.route.animation ||
oldWidget.route.selectedIndex != widget.route.selectedIndex ||
widget.route.items.length != oldWidget.route.items.length) {
_opacityAnimation.dispose();
_setOpacityAnimation();
}
}
void _setOpacityAnimation() {
_opacityAnimation?.dispose();
final double unit = 0.5 / (widget.route.items.length + 1.5);
if (widget.itemIndex == widget.route.selectedIndex) {
_opacityAnimation = CurvedAnimation(
@ -205,7 +205,7 @@ class _DropdownMenuItemButtonState<T> extends State<_DropdownMenuItemButton<T>>
@override
void dispose() {
_opacityAnimation?.dispose();
_opacityAnimation.dispose();
super.dispose();
}
@ -227,7 +227,7 @@ class _DropdownMenuItemButtonState<T> extends State<_DropdownMenuItemButton<T>>
child: child,
);
}
child = FadeTransition(opacity: _opacityAnimation!, child: child);
child = FadeTransition(opacity: _opacityAnimation, child: child);
if (kIsWeb && dropdownMenuItem.enabled) {
child = Shortcuts(shortcuts: _webShortcuts, child: child);
}