解决Flutter 滚动条(Scrollbar)没有附加到任何滚动位置(ScrollPosition)

6 min read

如果Flutter滚动条(Scrollbar)没有附加到任何滚动位置(ScrollPosition),这可能是因为你需要手动将滚动条与ScrollView或ListView等控件关联起来。你可以使用ScrollController控制滚动位置,并将其传递到Scrollbar的controller参数中。

以下是一个示例代码:

import 'package:flutter/material.dart';

class MyScrollable extends StatefulWidget {
  @override
  _MyScrollableState createState() => _MyScrollableState();
}

class _MyScrollableState extends State<MyScrollable> {
  final ScrollController _scrollController = ScrollController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Scrollbar(
        controller: _scrollController,
        child: ListView.builder(
          controller: _scrollController,
          itemCount: 100,
          itemBuilder: (BuildContext context, int index) {
            return ListTile(
              title: Text('Item ${index + 1}'),
            );
          },
        ),
      ),
    );
  }
}

在这个例子中,我们创建了一个带有100个列表项的ListView,并使用ScrollController来控制滚动位置。我们将ScrollController传递到了Scrollbar的controller参数中,以使ScrollBar与ListView关联起来。这样,当用户滚动列表时,滚动条将跟随滚动位置并显示在列表旁边。