add Sheet.addPostLayoutCallback static method #413
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.
What is this PR about?
Addresses issue #412, adds the
Sheet.addPostLayoutCallbackwhich allows to deferSheetControllercalls.Why do I need this?
Expanding
SheetusingSheetControllermight not always work, e.g. you are trying to animate the sheet and expand controller at the same time (see: #412). You can useaddPostLayoutCallbackin order to defer your call to the momentRenderSheetViewporthas finishedRenderSheetViewport.performLayoutAdditionally you can providetimeoutafter which this callback should be called anyway incaseRenderSheetViewport.performLayoutdoesn't start. Usually (this has not been super benchmarked!) layout starts under 50ms, putting 100ms to be on the safe side - YMMVSidenote
This is the best solution I could come up with, studying all the complexities of this package. This still doesn't fix the core issue, which is performing layout and expanding sheet at the same time - which just ends with
setPixels(0.0)(as shown in the bug report). This PR adds rather ugly static method that provides a bit more reliable workaround than use ofFuture.delay.