| Index: sky/sdk/lib/widgets/variable_height_scrollable.dart
|
| diff --git a/sky/sdk/lib/widgets/variable_height_scrollable.dart b/sky/sdk/lib/widgets/variable_height_scrollable.dart
|
| index ed74d11ca23f2cd84a792586b27d42124c5e77f7..58653aeabfa123e2e958de12b63eafce3f3b0306 100644
|
| --- a/sky/sdk/lib/widgets/variable_height_scrollable.dart
|
| +++ b/sky/sdk/lib/widgets/variable_height_scrollable.dart
|
| @@ -19,9 +19,12 @@ class VariableHeightScrollable extends Scrollable {
|
|
|
| IndexedBuilder builder;
|
| Object token;
|
| + bool _contentsChanged = true;
|
|
|
| void syncFields(VariableHeightScrollable source) {
|
| builder = source.builder;
|
| + if (token != source.token)
|
| + _contentsChanged = true;
|
| token = source.token;
|
| super.syncFields(source);
|
| }
|
| @@ -40,9 +43,15 @@ class VariableHeightScrollable extends Scrollable {
|
| bool didReachLastChild
|
| ) {
|
| assert(childOffsets.length > 0);
|
| - scrollBehavior.contentsSize = didReachLastChild ? childOffsets.last : double.INFINITY;
|
| - if (didReachLastChild && scrollOffset > scrollBehavior.maxScrollOffset)
|
| - settleScrollOffset();
|
| + if (didReachLastChild) {
|
| + scrollBehavior.contentsSize = childOffsets.last;
|
| + if (_contentsChanged && scrollOffset > scrollBehavior.maxScrollOffset) {
|
| + _contentsChanged = false;
|
| + settleScrollOffset();
|
| + }
|
| + } else {
|
| + scrollBehavior.contentsSize = double.INFINITY;
|
| + }
|
| }
|
|
|
| Widget buildContent() {
|
|
|