[two_dimensional_scrollables] Fixes TreeView crash when empty or last node collapsed#11622
[two_dimensional_scrollables] Fixes TreeView crash when empty or last node collapsed#11622Piinks wants to merge 6 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.
|
Thank you for the review! 💙 |
Cash or card 🤓 ? |
|
I made a small tweak in the last commit. There was a recent refactor in the framework of the 2d foundation, and so when I fixed this, it was based off of that. Made it more robust so it is fixed for before and after the framework change. 👍 |
|
Ah ha. Ok interesting. Taking another look. I want to avoid bumping the min Flutter SDK version if I can. |
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