带有 scrollController 的 Flutter Scrollbar 不起作用

问题描述 投票:0回答:2

当我在 ListView() 上包装 Scrollbar() 滚动条()不起作用 看得见却拖不动

这是我的代码

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: Text('products', style: TextStyle(color: Colors.black87)),
          elevation: 0.5,
        ),
        body: SafeArea(
          child: Scrollbar(
            child: ListView.builder(
              padding: EdgeInsets.only(top: kMediumGap),
              controller: _scrollController, // ✅
              shrinkWrap: true,
              itemCount: _products.length + 1,

...

@override
  void initState() {
    super.initState();

    _scrollController.addListener(() {
      if (_scrollController.position.pixels >= _scrollController.position.maxScrollExtent && !_fetching) {
        debugPrint('🟡 end of list = end of list');
        fetchProducts();
      }
}


  1. 如果我删除(分离)ListView() 中的 _scrollController 滚动条()工作正常。但我看不到滚动的结束所以这是必要的

  2. 如果我用 _scrollController 设置 Scrollbar() 控制器属性 卷轴很脏。一点也不顺利。

有什么原因或解决办法吗? 我想注意到滚动和 Scrollbar() 拖动功能的结束。两者都。

flutter scroll controller scrollbar
2个回答
0
投票

我测试了你的代码,它对我来说工作正常。我认为你的 fetchProducts() 函数有问题。


0
投票

我注意到将

Scrollbar
替换为
CupertinoScrollbar
就可以了,也可以附加
ScrollController
到它。

body: SafeArea(
          child: CupertinoScrollbar(
            controller: _scrollController,
            child: ListView.builder(
              padding: EdgeInsets.only(top: kMediumGap),
              controller: _scrollController, // ✅
              shrinkWrap: true,
              itemCount: _products.length + 1,
© www.soinside.com 2019 - 2024. All rights reserved.