一个 Flutter 插件,可提供平台无关/相关的滚动和平移功能。

特点

  • 此包可以水平和垂直滚动,一旦在一个特定方向上滚动,滚动就会被锁定。
  • 此包在移动平台上使用触摸手势,在桌面/网络上使用鼠标/触控板输入。

入门

dual_scroll: any 添加到您的 pubspec.yaml 的 dependencies 部分,如下所示。

dependencies:
# Your other dependencies...
  dual_scroll: any
# Your other dependencies...

运行 flutter pub get 来获取包。

或者,您的编辑器可能支持

flutter pub get

用法

开始导入包

import 'package:dual_scroll/dual_scroll.dart';

通过像这样包装您想要可滚动的 Widget 来使用

return DualScroll(
    verticalScrollbar: ScrollBar.defaultScrollBar(),
    horizontalScrollbar: ScrollBar.defaultScrollBar(),
    child: Container(), /* Your child widget here*/
);

与 ListView/GridView/Scrollable Widgets 作为子项/子项一起使用

要在拥有 ListView/GridView/Scrollable Widget 作为其子项/子项的同时使用 DualScroll widget,请通过以下方式初始化 DualScroll

return DualScroll(
    verticalScrollController: yourVerticalScrollController,
    horizontalScrollController: yourHorizontalScrollController,
    verticalScrollbar: ScrollBar.defaultScrollBar(),
    horizontalScrollbar: ScrollBar.defaultScrollBar(),
    child: Container(), /* Your child widget here*/
);

自定义附加属性

您可以将 ScrollBarSettings 传递给构造函数中的 DualScroll widget,并附带适当的参数(不一定需要提供所有参数)

var scrollBarSettings = ScrollBarSettings(
    keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, // Defaults to ScrollViewKeyboardDismissBehavior.manual
    clipBehavior: Clip.none, // Defaults to [Clip.hardEdge]
    verticalRestorationId: 'vertId', // Defaults to null
    horizontalRestorationId: 'horizId', // Defaults to null
    verticalPhysics = const ClampingScrollPhysics(), // Defaults to BouncingScrollPhysics
    horizontalPhysics = const ClampingScrollPhysics(), // Defaults to BouncingScrollPhysics
    verticalPadding: const EdgeInsets.all(8.0), //Defaults to null
    horizontalPadding: const EdgeInsets.all(8.0), //defaults to null
  );
  
  return DualScroll(
        // scrollBars and scrollControllers here
        settings: scrollBarSettings, //Optional
        pillColor: Colors.blueAccent, //Optional
        dimmedPillColor: Colors.blueAccent.withOpacity(0.8), //Optional
        trackColor: Colors.blueAccent.withOpacity(0.8), //Optional
        trackColorDimmed: Colors.blueAccent.withOpacity(0.6), //Optional
        hoverColor: Colors.blue.withOpacity(0.85), //Optional
        child: child, // Required
    );

附加信息

如果您遇到任何问题,请在此 Github 上提交。如果您想为此仓库做出贡献,请在 Github 上打开一个 PR。如果您想详细查看 API,请访问我们网站上的 dual_scroll

此外,如果您查看我们的 网站 和我们的 应用程序,我们将非常感激。

GitHub

查看 Github