flutter - 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
小部件试图采用所有可用高度,因此它试图采用无限高度,我认为这就是导致问题的原因。
推荐阅读
- python - 在for循环中使用rdkit生成png文件,但每次生成的都是同一个png文件
- android - 两个 Android 主题可以包含共同的值而不相互继承吗?
- powerbi - DAX 代码不适用于度量中使用的配置变量
- python - 如何整合销售人员和 Django?
- batch-file - for循环内批处理脚本中的子字符串计算
- xcode - Xcode:如何将“新二进制文件”上传到 App Store Connect?
- php - 使用 laravel 上传多个文件
- css - 如何忽略容器的宽度,向右溢出,而不破坏页面?
- python - 屏幕上的 Python Turtle 中心龟
- regex - 正则表达式排除带有点和 0 位的数字