flutter_scroll_to_top
一个包装器,可以在可滚动小部件上向用户显示滚动到顶部的提示。
安装
将以下依赖项添加到您的 pubspec.yaml 文件中
dependencies:
flutter_scroll_to_top: ^1.1.0
导入包
import 'package:flutter_scroll_to_top/flutter_scroll_to_top.dart';
ScrollWrapper
只需将您想要显示滚动到顶部提示的滚动部件包装在 ScrollWrapper 中,并将该滚动部件的 ScrollController 提供给包装器。
ScrollWrapper(
scrollController: scrollController,
child: ListView.builder(
controller: scrollController,
itemBuilder: (context, index) => Padding(
padding: const EdgeInsets.all(8.0),
child: ListTile(
title: Text('Tile $index'),
tileColor: Colors.grey.shade200,
),
),
),
),
自定义
您可以传递以下参数来自定义提示
promptScrollOffset- 在什么滚动偏移量处显示提示。promptAlignment- 提示在小部件上的对齐方式。promptDuration- 提示出现/消失所需的时间。promptAnimationCurve- 提示出现时遵循的动画曲线。promptAnimationType- 提示在动画时遵循的PromptAnimation。有三个选项:fade(淡入淡出)、scale(缩放)和size(尺寸)。scrollToTopDuration- 在按下提示按钮时滚动到顶部的页面所需的时间。scrollToTopCurve- 滚动到顶部的动画曲线。promptTheme- 您可以传递PromptButtonTheme来进一步修改提示按钮。它具有以下参数padding- 提示按钮周围的内边距。iconPadding- 按钮内图标周围的内边距。icon- 按钮内的图标。color- 提示按钮的颜色。
ScrollWrapper(
scrollController: scrollController,
promptAlignment: Alignment.topCenter,
promptAnimationCurve: Curves.elasticInOut,
promptDuration: Duration(milliseconds: 400),
promptScrollOffset: 300,
promptTheme: PromptButtonTheme(
icon: Icon(Icons.arrow_circle_up, color: Colors.amber),
color: Colors.deepPurpleAccent,
iconPadding: EdgeInsets.all(16),
padding: EdgeInsets.all(32)),
child: ListView.builder(
controller: scrollController,
itemBuilder: (context, index) => Padding(
padding: const EdgeInsets.all(8.0),
child: ListTile(
title: Text('Tile $index'),
tileColor: Colors.grey.shade200,
),
),
),
),
自定义提示小部件
您可以通过 promptReplacementBuilder 参数传递您选择的小部件来替换默认提示小部件。
ScrollWrapper(
scrollController: scrollController,
promptReplacementBuilder: (BuildContext context, Function scrollToTop) {
return MaterialButton(
onPressed: () {
scrollToTop();
},
child: Text('Scroll to top'),
);
},
child: ListView.builder(
controller: scrollController,
itemBuilder: (context, index) => Padding(
padding: const EdgeInsets.all(8.0),
child: ListTile(
title: Text('Tile $index'),
tileColor: Colors.grey.shade200,
),
),
),
)
NestedScrollView 实现
实现类似,只需将您的可滚动主体包装在 ScrollWrapper 中,并将父级 NestsedScrollView 的控制器传递给包装器。



