flutter - Flutter List View Builder 滚动控制器不起作用
问题描述
我有一个类似 Instagram 的应用程序,顶部有故事,然后提供数据。我希望我的提要列表视图滚动到函数的顶部(即单击按钮或其他)。
ScrollController _feedController;
@override
void initState() {
_feedController = new ScrollController();
_feedController.addListener(() {
print("scrolling");
});
_fetchData();
super.initState();
}
// This is in the build function.
return ListView.builder(
padding: EdgeInsets.all(0.0),
shrinkWrap: true,
controller: _feedController,
physics: ClampingScrollPhysics(),
itemCount: _listFeed.length,
itemBuilder: (BuildContext context, int index) {
return ProductWidget(
product: _listFeed[index],
navigateOnImage: true,
);
},
);
// This function should scroll the list view to the top.
refresh() {
_fetchData();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_feedController.animateTo(
0.0,
duration: Duration(milliseconds: 300),
curve: Curves.easeOut,
);
});
print("home screen refreshed");
}
我在 initState() 上初始化我的控制器并添加了一个监听器。侦听器和控制器的 animateTo() 函数都不起作用。我也尝试过使用 WidgetsBinding.instance.addPostFrameCallback()。我错过了什么.. ??
解决方案
您需要在 ScrollController 的 addListener 中调用 fetchData 函数。下面是一个正确使用 ScrollController 的例子:
@override
void initState() {
_feedController = new ScrollController()..addListener(function);
super.initState();
}
void function(){
print("scrolling");
_fetchData();
}
推荐阅读
- javascript - 允许在字符串中的 ':' 之后使用 0 到 59 的整数
- python - 有没有办法按列中的数组过滤熊猫数据框行?
- android-studio - android studio LG G3 未被识别为 Android 设备
- java - entityManager.flush 没有立即插入数据库,为什么?
- graphdb - 在对 Graphdb 的 restTemplate.postForObject 请求中获取“org.springframework.web.client.HttpServerErrorException: 500 null”
- python - 第 80 行出现错误无效的块标记:“NOUN_LIST|count_ordered”,预期为“endblock”。您是否忘记注册或加载此标签?
- javascript - TypeScript - 使用 lodash 语法就地排序
- c# - 不同 dbContexts 上的异步任务。说第二次操作是在这种情况下开始的
- flutter - Flutter - 如何使用 SQFLite 包作为 Flutter web 的本地存储
- python - 无法相对定位标签以保持在中间顶部