简体   繁体   English

如何在ListView中添加滚动指示器

[英]How to add scroll indicator in ListView

Is there any way to show the scroll indicator on the ListView ?有没有办法在ListView上显示滚动指示器?

Here is my basic code:这是我的基本代码:

ListView.builder(
  itemCount: 50,
  itemBuilder: (context, index) => ListTile(title: Text("Item= ${index + 1}"),),
)

Thanks to Günter Zöchbauer .感谢Günter Zöchbauer

You can wrap your ListView in Scrollbar您可以将ListView包装在Scrollbar

Scrollbar(
    child: ListView.builder(
      itemCount: 50,
      itemBuilder: (context, index) => ListTile(title: Text("Item= ${index + 1}"),),),
)

I think better to use CupertinoScrollbar instead of Scrollbar .我认为最好使用CupertinoScrollbar而不是Scrollbar CupertinoScrollbar is can touch and scroll to the bottom.. CupertinoScrollbar可以触摸并滚动到底部..

Ex:前任:

 CupertinoScrollbar(
            child: ListView.builder(...),

Or或者

Scrollbar(
    child: ListView.builder(...),

You can implement this designer scrollbar library :您可以实现此设计器滚动条库:

  1. draggable_scrollbar draggable_scrollbar

  2. alphabet scrolling字母滚动

OR或者

You can wrap ListView in Scrollbar widget您可以将 ListView 包装在Scrollbar小部件中

Scrollbar(
    child: ListView.builder(...),
)

In this code: An example of how to show in ListView在此代码中:如何在ListView显示的示例

滚动指示器

child: Scrollbar( 
   child: ListView.builder(
   padding: EdgeInsets.all(5),
   itemCount: snapshot.data.length,
    physics: BouncingScrollPhysics(),
    itemBuilder: (context, index) {
      return generateColum(snapshot.data[index], index);
    }),
 ),

Create a ScrollController variable (ScrollController _scrollController);创建一个 ScrollController 变量(ScrollController _scrollController); Instatiate _scrollController inside initState() or wherever you want, _scrollController = ScrollController();_scrollController initState()或任何你想要的地方创建 _scrollController, _scrollController = ScrollController();
Add _scrollController variable inside Scrollbar and ListView properties,ScrollbarListView属性中添加_scrollController变量,

controller:_scrollController

Here's the code:这是代码:

ScrollController _scrollController;
  @override
  void initState() {
    super.initState();
    _scrollController = ScrollController();
  }
Scrollbar(
        isAlwaysShown: true,
         controller: _scrollController,
         child: ListView(
         controller: _scrollController,
   )

if you don't want it always shown set to false如果您不希望它始终显示为 false

isAlwaysShown: false,
Scrollbar(
        thickness: 10,
        isAlwaysShown: true,
        child: ListView.builder(
          itemCount: _controller().transactonsList.length,
          itemBuilder: (context, index) {
            return Card(
              elevation: 5,
              child: Container(
                padding: const EdgeInsets.only(bottom: 16),
                height: 80,
                child: Row(
                  children: [
                    SizedBox(width: 10),
                    amountOfTransaction(index),
                    SizedBox(width: 16),
                    dateAndTitleOfTransaction(index),
                  ],
                ),
              ),
            );
          },
        ),
      )

funcionou assim: "Lembrando que estou usando para linux e não testei para web, windows e mobile. funcionou assim:“Lembrando que estou usando para linux e não testei para web, windows e mobile。

  final ScrollController _scroll = ScrollController();
  @override
  Widget build(BuildContext context) {
(...)
child: ListView.builder(
  controller: _scroll,

If u need to style your scroll bar a bit wrap the ListView in RawScrollbar and use the same scroll controller instance for both widgets如果您需要设置滚动条的样式,请将ListView包装在RawScrollbar中,并对两个小部件使用相同的滚动控制器实例

final ScrollController _scrollController = ScrollController();

@override
Widget build(BuildContext context) {
      (...)
      child: RawScrollbar(
          controller: _scrollController,
          thumbColor: Colors.redAccent,
          radius: const Radius.circular(8),
          crossAxisMargin: 2,
          child: ListView.builder(
            controller: _scrollController,
            itemCount: 50,
            itemBuilder: (context, index) => ListTile(
              title: Text("Item= ${index + 1}"),
            ),
          ),
        ),
  }


    

Scrollbar( child:ListView.builder( itemCount:20, itemBuilder:(c,i) => MyItem(i), ), ), Scrollbar( child:ListView.builder( itemCount:20, itemBuilder:(c,i) => MyItem(i), ), ),

You have to give itemcount as how many list you have ----- Example: itemCount: items.length, -----你必须给 itemcount 作为你有多少列表-----例如:itemCount: items.length, -----

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM