gpt4 book ai didi

Flutter:ListView 不滚动

转载 作者:行者123 更新时间:2023-12-03 02:47:33 27 4
gpt4 key购买 nike

问题:

最初我禁用了 ListView 滚动,并希望在 3 秒后启用它。当应用程序启动并且您继续滚动它大约 5 秒钟(手指没有离开屏幕)时,ListView 不会滚动。

但是它应该滚动,因为我在第 3 秒启用滚动,控制台确认 ListView enabled 但我仍然无法滚动它。

代码:

bool _enabled = false; // scrolling disabled initially

@override
void initState() {
super.initState();
Timer(Duration(seconds: 3), () {
print("Scrolling enabled");
setState(() => _enabled = true); // scrolling enabled after 3 seconds
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
physics: _enabled ? ClampingScrollPhysics() : NeverScrollableScrollPhysics(),
itemBuilder: (_, i) => ListTile(title: Text("Item $i")),
),
);
}

最佳答案

这里有一个解决方法:

final _scrollController = ScrollController();
var _firstScroll = true;
bool _enabled = false;

@override
void initState() {
super.initState();
Timer(Duration(seconds: 3), () {
setState(() => _enabled = true);
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: GestureDetector(
onVerticalDragUpdate: (details) {
if (_enabled && _firstScroll) {
_scrollController
.jumpTo(_scrollController.position.pixels - details.delta.dy);
}
},
onVerticalDragEnd: (_) {
if (_enabled) _firstScroll = false;
},
child: AbsorbPointer(
absorbing: !_enabled,
child: ListView.builder(
controller: _scrollController,
physics: ClampingScrollPhysics(),
itemBuilder: (_, i) => ListTile(title: Text("Item $i")),
),
),
),
);
}

关于Flutter:ListView 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com