Flutter桌面滚动条插件desktop_scrollbar的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter桌面滚动条插件 desktop_scrollbar 的使用

desktop_scrollbar 是一个专为桌面和Web应用设计的Flutter滚动条插件,它实现了正确的轨道点击跳转行为。与默认的Flutter滚动条不同,当用户点击轨道时,滚动条会直接跳到点击位置,而不是仅移动一小段距离。

功能特性

  • 正确实现轨道点击后滚动条跳转的行为。
  • 使用与Flutter内置的 RawScrollbar 相同的代码,因此API保持一致。

安装步骤

要安装此插件,请在您的项目中执行以下命令:

flutter pub add desktop_scrollbar

或者手动将 desktop_scrollbar 添加到 pubspec.yaml 文件中的依赖项部分:

dependencies:
  desktop_scrollbar:

然后,在源码中导入库:

import 'package:desktop_scrollbar/desktop_scrollbar.dart';

使用方法

为了使用桌面滚动条,您需要将可滚动的小部件(如 ListView)包裹在 DesktopScrollbar 中,并将同一个 ScrollController 实例传递给两者。

示例代码

下面是一个完整的示例演示如何使用 DesktopScrollbar 包装 ListView.builder 小部件,并配置一些自定义选项,比如滚动条轨道的颜色、可见性以及厚度等。

import 'package:desktop_scrollbar/desktop_scrollbar.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(useMaterial3: true),
      darkTheme: ThemeData.dark(),
      themeMode: ThemeMode.dark,
      home: MyHomePage(title: "Test"),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({super.key, required this.title}) : scrollController = ScrollController();

  final String title;
  final ScrollController scrollController;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: DesktopScrollbar(
        controller: widget.scrollController,
        trackVisibility: true,
        thumbVisibility: true,
        thickness: 10,
        trackColor: Colors.black,
        child: ScrollConfiguration(
          behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false),
          child: ListView.builder(
            controller: widget.scrollController,
            addAutomaticKeepAlives: false,
            addRepaintBoundaries: false,
            addSemanticIndexes: false,
            itemCount: 100,
            itemExtent: 35,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(
                title: Text("Row: ${index + 1}"),
              );
            },
          ),
        ),
      ),
    );
  }
}

更多关于Flutter桌面滚动条插件desktop_scrollbar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter桌面滚动条插件desktop_scrollbar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter桌面应用中使用desktop_scrollbar插件的示例代码。这个插件允许你在桌面平台上添加滚动条,从而改善用户体验。

首先,确保你已经在你的pubspec.yaml文件中添加了desktop_scrollbar依赖项:

dependencies:
  flutter:
    sdk: flutter
  desktop_scrollbar: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter桌面应用中使用DesktopScrollbar组件。以下是一个完整的示例,展示了如何在ListView中添加滚动条:

import 'package:flutter/material.dart';
import 'package:desktop_scrollbar/desktop_scrollbar.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Desktop Scrollbar Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final List<String> items = List.generate(100, (index) => "Item ${index + 1}");

    return Scaffold(
      appBar: AppBar(
        title: Text('Desktop Scrollbar Example'),
      ),
      body: DesktopScrollbar(
        // 将ListView包裹在DesktopScrollbar中
        child: ListView.builder(
          itemCount: items.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(items[index]),
            );
          },
        ),
        // 可选参数,用于自定义滚动条外观
        scrollbarThickness: 10.0,
        scrollbarRadius: 5.0,
        scrollThumbColor: Colors.grey,
        scrollThumbHoverColor: Colors.blue,
        scrollRailColor: Colors.transparent,
      ),
    );
  }
}

代码解释

  1. 依赖项:在pubspec.yaml中添加desktop_scrollbar依赖项。
  2. MaterialApp:创建一个基本的Flutter应用。
  3. MyHomePage:构建主页面,包含一个AppBar和一个Scaffold
  4. DesktopScrollbar:将ListView.builder包裹在DesktopScrollbar中,用于在桌面平台上显示滚动条。
  5. ListView.builder:生成一个包含100个条目的列表。
  6. 可选参数DesktopScrollbar提供了几个可选参数,用于自定义滚动条的外观,如scrollbarThicknessscrollbarRadiusscrollThumbColor等。

这个示例展示了如何使用desktop_scrollbar插件在Flutter桌面应用中添加滚动条。你可以根据需要调整滚动条的样式和属性。

回到顶部