[two_dimensional_scrollables] Fixes TreeView crash when empty or last node collapsed#11622
Open
Piinks wants to merge 2 commits intoflutter:mainfrom
Open
[two_dimensional_scrollables] Fixes TreeView crash when empty or last node collapsed#11622Piinks wants to merge 2 commits intoflutter:mainfrom
Piinks wants to merge 2 commits intoflutter:mainfrom
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates the two_dimensional_scrollables package to version 0.5.2, addressing a crash in TreeView that occurred when the view shrunk to zero rows or when the last node was collapsed. The changes include safe-guarding the vertical extent calculation against empty row metrics and ensuring the layout loop only executes when rows are present. New test cases verify these fixes and ensure scroll bounds are updated correctly. Feedback indicates that the horizontal extent calculation should be updated to use content-relative positions to ensure correct scroll bounds during horizontal scrolling.
Piinks
commented
Apr 30, 2026
| await tester.pump(); | ||
| expect(verticalController.position.pixels, 0.0); | ||
| expect(verticalController.position.maxScrollExtent, 600.0); | ||
| expect(verticalController.position.maxScrollExtent, 2200.0); |
Contributor
Author
There was a problem hiding this comment.
Confirmed, this test was incorrect
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR provides a robust fix for a crash in TreeView and resolves a regression introduced by a previous partial fix in PR #9103.
Previous attempts to fix the "empty tree" crash (shrinking to 0 rows) by moving _updateScrollBounds to the end of layout introduced a subtle inconsistency. When a node collapse triggered a scroll correction, the visible row range was recalculated after the layout loop had finished. This resulted in the paint phase attempting to access children that were never built, causing a null dereference (as seen in the Expand then collapse with offscreen nodes (top) test).
Fixes flutter/flutter#164981
Pre-Review Checklist
[shared_preferences]///).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-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.Footnotes
Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2