Flutter Scrollbar的ScrollController没有附加ScrollPosition

Chr*_*ris 40 scrollbar scrollview dart flutter singlechildscrollview

error我在使用时得到这个AppBar

滚动条的 ScrollController 没有附加 ScrollPosition。

这是我的CustomScrollBar

class CustomScrollBar extends StatelessWidget {
  final Widget child;
  final ScrollController scrollController;

  const CustomScrollBar({
    required this.scrollController,
    required this.child,
  });

  @override
  Widget build(BuildContext context) {
    return RawScrollbar(
      thumbColor: AppColors.gray,
      radius: Radius.circular(8),
      thickness: 4,
      isAlwaysShown: true,
      controller: scrollController,
      child: child,
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该永远可见。这就是我使用它的方式:

child: CustomScrollBar(
              scrollController: _scrollControllerForScrollBar,
              child: SingleChildScrollView(
                controller: _scrollControllerForScrollBar,
                child: Padding(
                  padding: EdgeInsets.all(7.0.scaled),
                  child: Container(
                    width: double.infinity,
                    child: Text(
                      'any text bla bla bla \n\n\n this is a lot of \n text \n .'
                    ),
                  ),
                ),
              ),
            ),
Run Code Online (Sandbox Code Playgroud)

如您所见, theScrollBar和 theSingleChildScrollView使用相同的ScrollController. 我不知道为什么会出现这个错误。知道我在这里缺少什么吗?

jar*_*ler 86

我正在使用一个ScrollBarListView部件,并在调试控制台中收到此错误。为了摆脱它,我必须ScrollController在两个小部件上设置。

final yourScrollController = ScrollController();

Scrollbar(
  isAlwaysShown: true,
  thickness: 10,
  controller: yourScrollController, // Here 
  child: ListView.builder(
    padding: EdgeInsets.zero,
    scrollDirection: Axis.vertical,
    controller: yourScrollController, // AND Here
    itemCount: yourRecordList?.length
    ....
  )
)
Run Code Online (Sandbox Code Playgroud)

  • 如果您的孩子是“SingleChildScrollView”而不是“ListView.builder”,这也适用。 (8认同)

小智 11

假设您同时使用Scrollbar小部件和ListView小部件作为滚动条的子项 - 它们都应该具有相同的控制器:

ScrollController _controller = ScrollController();

     Scrollbar(
              controller: _controller,
              child: ListView(
                controller: _controller,
           ....), // ListView
    ) // Scrollbar
Run Code Online (Sandbox Code Playgroud)