This reverts commit 62cf4dbf10a6bd5b01ab6687dedda2df7cdc9b35.
This commit is contained in:
parent
a57f45e080
commit
37ebe3d82a
@ -341,9 +341,17 @@ class _PagePosition extends ScrollPositionWithSingleContext implements PageMetri
|
|||||||
RenderObject? targetRenderObject,
|
RenderObject? targetRenderObject,
|
||||||
}) {
|
}) {
|
||||||
// Since the _PagePosition is intended to cover the available space within
|
// Since the _PagePosition is intended to cover the available space within
|
||||||
// its viewport, stop trying to any scroll, otherwise, could end up changing
|
// its viewport, stop trying to move the target render object to the center
|
||||||
// which page is visible and moving the render object out of the viewport.
|
// - otherwise, could end up changing which page is visible and moving the
|
||||||
return Future<void>.value();
|
// targetRenderObject out of the viewport.
|
||||||
|
return super.ensureVisible(
|
||||||
|
object,
|
||||||
|
alignment: alignment,
|
||||||
|
duration: duration,
|
||||||
|
curve: curve,
|
||||||
|
alignmentPolicy: alignmentPolicy,
|
||||||
|
targetRenderObject: null,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -1006,76 +1006,6 @@ void main() {
|
|||||||
expect(targetMidRightPage1, findsOneWidget);
|
expect(targetMidRightPage1, findsOneWidget);
|
||||||
expect(targetMidLeftPage1, findsOneWidget);
|
expect(targetMidLeftPage1, findsOneWidget);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('ensureVisible does not move PageViews when there are objects between pageView and target object', (WidgetTester tester) async {
|
|
||||||
final PageController controller = PageController();
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
await tester.pumpWidget(
|
|
||||||
Directionality(
|
|
||||||
textDirection: TextDirection.ltr,
|
|
||||||
child: PageView(
|
|
||||||
controller: controller,
|
|
||||||
children: List<Widget>.generate(3, (int index) {
|
|
||||||
return Row(
|
|
||||||
children: <Widget>[
|
|
||||||
Container(
|
|
||||||
width: 400,
|
|
||||||
color: Colors.red,
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: Container(
|
|
||||||
color: Colors.green,
|
|
||||||
width: double.infinity,
|
|
||||||
height: 50,
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
child: Container(
|
|
||||||
key: Key(index.toString()),
|
|
||||||
color: Colors.yellow,
|
|
||||||
height: 50,
|
|
||||||
width: 200,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
controller.position.addListener(() {
|
|
||||||
count++;
|
|
||||||
});
|
|
||||||
|
|
||||||
final Finder targetOfPage0 = find.byKey(const Key('0'));
|
|
||||||
final Finder targetOfPage1 = find.byKey(const Key('1'));
|
|
||||||
|
|
||||||
expect(targetOfPage0, findsOneWidget);
|
|
||||||
expect(targetOfPage1, findsNothing);
|
|
||||||
|
|
||||||
// `ensureVisible` should not trigger any scrolling or page changing of pageView.
|
|
||||||
await tester.ensureVisible(targetOfPage0);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
expect(count, 0);
|
|
||||||
expect(targetOfPage0, findsOneWidget);
|
|
||||||
expect(targetOfPage1, findsNothing);
|
|
||||||
|
|
||||||
controller.jumpToPage(1);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
|
|
||||||
expect(count, 1); // Trigger by `controller.jumpToPage(1)`
|
|
||||||
expect(targetOfPage0, findsNothing);
|
|
||||||
expect(targetOfPage1, findsOneWidget);
|
|
||||||
|
|
||||||
await tester.ensureVisible(targetOfPage1);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
expect(count, 1);
|
|
||||||
expect(targetOfPage0, findsNothing);
|
|
||||||
expect(targetOfPage1, findsOneWidget);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore: must_be_immutable
|
// ignore: must_be_immutable
|
||||||
|
Loading…
x
Reference in New Issue
Block a user