PageView.builder SingleChildScrollView 内部颤动
PageView.builder inside SingleChildScrollView flutter
我正在尝试在 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
小部件的子部件可滚动,请尝试使用 SingleChildScrollView
小部件包装 itemBuilder
方法的根小部件并将其从当前小部件中删除位置。
所以代码应该是这样的:
@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
小部件试图占用所有可用高度,所以它试图采用无限高度,我认为这就是导致问题的原因。
我正在尝试在 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
小部件的子部件可滚动,请尝试使用 SingleChildScrollView
小部件包装 itemBuilder
方法的根小部件并将其从当前小部件中删除位置。
所以代码应该是这样的:
@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
小部件试图占用所有可用高度,所以它试图采用无限高度,我认为这就是导致问题的原因。