flutter - 当粘性标头用于环绕 GirdView.builder 小部件时,颤振“NoSuchMethodError:getter 'position' was called on null”
问题描述
尝试使用粘性标题来包裹 GridView.builder 小部件,因为我希望在用户向下滚动足够多的屏幕时跟随标题,但是得到“NoSuchMethodError:在 null 上调用了 getter 'position'。接收者:null 试过调用:位置另见:https://flutter.dev/docs/testing/errors"。我使用相同的小部件来包裹一个 Column 小部件。我尝试用 Container、Column 和其他小部件包装 GridView。我只会得到其他错误。这个错误是什么意思?
return _stickyHeader.render(
headerChild: Text(''),
content: GridView.builder(
shrinkWrap: true,
physics: ScrollPhysics(),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 5.0,
mainAxisSpacing: 5.0,
),
itemCount: state.avatarUrlList.length,
itemBuilder: (BuildContext context, int index) {
if (index == state.currentSelectedAvatarIndex) {
return Center(
child: InkWell(
onTap: () => _onAvatarImageClicked(
state.avatarUrlList[index], index),
child: Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: Colors.red,
width: 4.0,
),
),
child: CircleAvatar(
radius: 60,
backgroundColor: Colors.transparent,
backgroundImage:
NetworkImage(state.avatarUrlList[index]),
),
),
),
);
} else {
return Center(
child: InkWell(
onTap: () => _onAvatarImageClicked(
state.avatarUrlList[index], index),
child: CircleAvatar(
radius: 60,
backgroundColor: Colors.transparent,
backgroundImage:
NetworkImage(state.avatarUrlList[index]),
),
),
);
}
},
),
);
}
Widget render({Widget headerChild, Widget content}) {
return StickyHeader(
header: Container(
decoration: BoxDecoration(
color: ThemeConstants.ceruleanCrayola,
borderRadius: BorderRadius.circular(15),
),
height: 50.0,
padding: EdgeInsets.symmetric(horizontal: 16.0),
margin: EdgeInsets.symmetric(horizontal: 20.0),
alignment: Alignment.centerLeft,
child: headerChild,
),
content: content,
);
}
解决方案
基于https://pub.dev/packages/sticky_headers
您可以在任何可滚动内容中放置一个 StickyHeader 或 StickyHeaderBuilder,例如:ListView、GridView、CustomScrollView、SingleChildScrollView 或类似内容。
您可能需要尝试将您的StickyHeader
设置SingleChildScrollView
为基本。
推荐阅读
- python - 如何从 azure blob 存储中读取 parquet 文件(大尺寸 1 GB)而不在本地机器上下载
- database - 2PC(2阶段提交)和2 PL(2阶段锁定)之间的区别
- android - 模拟器总是崩溃并出现错误“等待设备时出错:AVD 的模拟器进程已终止”
- angular - 角度问题(无法读取未定义的属性“流派”)
- python - 如何从pyhton中的ndarray(预测值)一张一张地显示/显示图像?
- python - Fastapi 和 Pydantic:如何嵌套对象?
- reactjs - 里面的文字
在 react-native 中,标签未显示在屏幕上 - java - 用于发布请求的 Spring Boot 中的处理程序方法正在更新数据库中的空值
- c++ - CommandLineParser 不接受内部带有减号的参数
- python - Python asyncio:我什么时候应该调用 wait_closed()?