PageView、ListView和GridView构建器专为大量对象设计,并在滚动时重新构建。
Column或Row保存所有子构建。
您可以尝试:
SingleChildScrollView(NeverScrollable)-> Row -> A(相同屏幕大小)和B(相同)
然后动画或跳转到:
对于A偏移0,对于B偏移屏幕宽度。
我已经尝试过,效果很好。
![enter image description here](https://istack.dev59.com/PujPu.gif)
class AtoBExample extends StatefulWidget {
@override
_AtoBExampleState createState() => _AtoBExampleState();
}
class _AtoBExampleState extends State<AtoBExample> {
ScrollController scrollController = ScrollController();
_toB() {
scrollController.jumpTo(MediaQuery.of(context).size.width);
}
_toA() {
scrollController.jumpTo(0);
}
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
return Scaffold(
body: SingleChildScrollView(
controller: scrollController,
scrollDirection: Axis.horizontal,
physics: const NeverScrollableScrollPhysics(),
child: Row(
children: [
Builder(
builder: (c) {
print('GREEN BUILD');
return InkWell(
onTap: (){
print('TO B');
_toB();
},
child: Container(
width: size.width,
height: size.height,
color: Colors.green,
),
);
},
),
Builder(
builder: (c) {
print('RED BUILD');
return InkWell(
onTap: (){
print('TO A');
_toA();
},
child: Container(
width: size.width,
height: size.height,
color: Colors.red,
),
);
},
)
],
),
),
);
}
}
Navigator
2.0吗?(我指的是MaterialApp.router
) - pskink