如何解决SingleChildScrollView内部的PageView.builder抖动
我正在尝试在SingleChildScrollView中使用PageView.builder,但我总是得到一个错误提示
RenderBox was not laid out: RenderRepaintBoundary#490ce relayoutBoundary=up15 NEEDS-PAINT
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1694 pos 12: 'hasSize'
这是代码的一部分
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: SingleChildScrollView(
child: PageView.builder(
itemCount: 3,scrollDirection: Axis.horizontal,reverse: false,itemBuilder: (BuildContext context,int index) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 4.0),child: Container(
decoration: BoxDecoration(
color: Colors.grey,borderRadius: BorderRadius.all(Radius.circular(4.0)),),);
},)
.....
我应该在代码中添加一些内容吗?
解决方法
如果您希望PageView
小部件的子级可滚动,则尝试用itemBuilder
小部件包装SingleChildScrollView
方法的根小部件并将其从当前位置移除。
因此代码如下:
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: PageView.builder(
itemCount: 3,scrollDirection: Axis.horizontal,reverse: false,itemBuilder: (BuildContext context,int index) {
return SingleChildScrollView( // Moving this widget down to this position is the only change in the code...
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 4.0),child: Container(
decoration: BoxDecoration(
color: Colors.grey,borderRadius: BorderRadius.all(Radius.circular(4.0)),),);
},.....
问题是SingleChildScrollView
小部件的高度是无限的,因为滚动功能和PageView
小部件会尝试采用所有可用的高度,因此它试图将其设置为无限的高度,我认为这是是什么引起了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。