Repository navigation
iOS: Add null check for touch rate correction task runner - #191641
Conversation
There was a problem hiding this comment.
Code Review
This pull request adds a null check for the engine's platform task runner in FlutterViewController before creating the touch rate correction vsync client to prevent a null dereference. It also adds a corresponding unit test. Feedback suggests simplifying the new unit test by removing unnecessary engine initialization steps and mocking, as a newly initialized FlutterEngine already has a nil platform task runner by default.
| FlutterEngine* engine = [[FlutterEngine alloc] init]; | ||
| [engine runWithEntrypoint:nil]; | ||
| FlutterViewController* viewController = [[FlutterViewController alloc] initWithEngine:engine | ||
| nibName:nil | ||
| bundle:nil]; | ||
| id mockEngine = OCMPartialMock(engine); | ||
| [self addTeardownBlock:^{ | ||
| [mockEngine stopMocking]; | ||
| }]; | ||
| OCMStub([mockEngine platformTaskRunner]).andReturn(nil); |
There was a problem hiding this comment.
Since a newly initialized FlutterEngine does not have its shell created yet, its platformTaskRunner is already nil by default. We can simplify this test by removing the unnecessary call to runWithEntrypoint: and the subsequent partial mocking of the engine. This avoids spawning engine threads and reduces mocking overhead, making the test faster and more reliable.
FlutterEngine* engine = [[FlutterEngine alloc] init];
FlutterViewController* viewController = [[FlutterViewController alloc] initWithEngine:engine
nibName:nil
bundle:nil];
References
- Suggest simplification and refactoring: Assess whether the code can be made simpler or refactored to enhance readability and maintainability. (link)
There was a problem hiding this comment.
This is wrong, but it gave me an idea.
It's correct that a newly-constructed engine does have a nil platformTaskRunner, but the proposed change will crash. initWithEngine:... calls setViewController: which does FML_DCHECK(self.platformView), but platformView is null while the shell is null so we'll get an abort instead of running the test. You need a running engine, but a running engine has a platform task runner.
That said... we can run the engine, attach the view controller then call [engine destroyContext] to kill the shell (and the task runner) which lets us test this without the partial engine mock. Done.
`FlutterViewController.viewDidLoad` creates a vsync client to correct the rate at which touch events are delivered on ProMotion displays, and passes it `self.engine.platformTaskRunner`. That property is nullable and only set once the engine's shell is created, then cleared again in `destroyContext`. `FlutterVSyncClient` requires a non-null task runner and dereferences it. A view controller whose engine is nil would dereference null and takes the app down with it, at launch. We now bail out when there's no task runner. The argument is that losing whatever smoothing effect this has while we have no running egnine has no effect, and either way it's better than a null deref. There's the separate argument detailed in flutter#191199 that this entire client isn't really doing anything positive and should be deleted. This simply prevents the null deref until that work can land. Also worth noting that `platformTaskRunner` is declared `nullable` and the Swift-generated `initWithTaskRunner:` takes a `_Nonnull` task runner, so clang spotted this issue when I enabled `-Wnullable-to-nonnull-conversion`: ``` FlutterViewController.mm:1332:36: warning: implicit conversion from nullable pointer 'FlutterFMLTaskRunner * _Nullable' to non-nullable pointer type 'FlutterFMLTaskRunner * _Nonnull' [-Wnullable-to-nonnull-conversion] ``` I'll follow up with a patch that enables that warning, but it requires a few other cleanups first. Issue: flutter#190030
4ea08c0 to
5358e59
Compare
LongCatIsLooong
left a comment
There was a problem hiding this comment.
LGTM since the touch correction stuff is going to be deleted soon.
Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
FlutterViewController.viewDidLoadcreates a vsync client to correct the rate at which touch events are delivered on ProMotion displays, and passes itself.engine.platformTaskRunner. That property is nullable and only set once the engine's shell is created, then cleared again indestroyContext.FlutterVSyncClientrequires a non-null task runner and dereferences it. A view controller whose engine is nil would dereference null and takes the app down with it, at launch. We now bail out when there's no task runner.The argument is that losing whatever smoothing effect this has while we have no running egnine has no effect, and either way it's better than a null deref.
There's the separate argument detailed in #191199 that this entire client isn't really doing anything positive and should be deleted. This simply prevents the null deref until that work can land.
Also worth noting that
platformTaskRunneris declarednullableand the Swift-generatedinitWithTaskRunner:takes a_Nonnulltask runner, so clang spotted this issue when I enabled-Wnullable-to-nonnull-conversion:I'll follow up with a patch that enables that warning, but it requires a few other cleanups first.
Issue: #190030
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot 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.