Flutter滚动揭示动画插件reveal_on_scroll的使用

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

Flutter滚动揭示动画插件reveal_on_scroll的使用

插件介绍

RevealOnScroll 是一个用于在滚动时轻松动画化控件的 Flutter 库。 它旨在坚固且灵活,但希望你会惊讶于它的易用性。通常,你可以使用它来动画化控件或根据当前滚动位置显示/隐藏任何控件。

RevealOnScroll 动画效果

开始使用

在你的 Flutter 项目中,需要添加以下依赖项:

dependencies:
  ...
  reveal_on_scroll: <latest_version>

在你的库文件中添加以下导入:

import 'package:reveal_on_scroll/reveal_on_scroll.dart';

创建滚动揭示动画

下面的实现允许你通过使用默认动画对每个 FlexCard 进行动画处理。

// _controller 用于管理每个控件的位置
final ScrollController _controller = ScrollController();

ScrollToReveal.withAnimation(
    label: 'Scroll$index',
    scrollController: _controller,
    reflectPosition: -1100,
    animationType: AnimationType.findInLeft,
    child: const FlexCard(),
);

实现滚动行为的三种方式

  1. 将一个控件传递给库(此选项带有 ValueChanged 参数,当达到预期位置时返回一个布尔值)。
ScrollToReveal(
   label: 'withChild',
   scrollController: _controller,
   onReached: (value) {
      // 当到达预期位置时执行的操作
   },
   child: Container(
      height: 500,
      color: Colors.red,
  ),
)
  1. 使用 ScrollToReveal.builder。这有一个布尔值,在当当前位置达到时返回 true。
ScrollToReveal(
   label: 'header',
   scrollController: _controller,
   onReached: (value) {
      // 当到达预期位置时执行的操作
   },
   widgetBuilder: (show) {
      return Container();
   },
)
  1. 使用 ScrollToReveal.withAnimation。这包含一个默认的动画,使用 animate_do(一个允许快速动画的包)实现。
ScrollToReveal.withAnimation(
   label: 'Scroll$index',
   scrollController: _controller,
   reflectPosition: -1100,
   animationType: AnimationType.findInLeft,
   child: const FlexCard(),
)

可选参数

名称 用途
child 显示在滚动元素视口中的控件
label 标签,用于我们的 GlobalObjectKey
scrollController 用于知道滚动到当前位置
reflectPosition 帮助将控件位置推至视口上方或下方
animationType 当使用默认构建器时,需要指定要使用的动画类型
onReached 监测滚动条是否设置在当前控件的视口内
widgetBuilder 允许自定义控件的构建器

已知问题

目前没有已知的问题。

贡献

  • 修复一个bug
  • 编写和改进一些文档。文档对我们非常重要。我们非常感谢帮助我们添加多种语言的文档。
  • 如果你是开发者,请查看 CONTRIBUTING.MD,了解提交错误、请求新功能、准备代码以提交拉取请求等信息。
  • 请别忘了点赞、关注并星标我们的仓库!

示例代码

import 'package:example/example_view.dart';
import 'package:flutter/material.dart';

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

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

  // 这个 widget 是你应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Reveal on Scroll ',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const SimpleWidget(),
    );
  }
}

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

1 回复

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


当然,reveal_on_scroll 是一个用于 Flutter 的滚动揭示动画插件,它允许你在列表项滚动到视图内时触发动画效果。以下是一个简单的代码示例,展示了如何使用 reveal_on_scroll 插件来实现滚动揭示动画。

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

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

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

接下来是一个完整的 Flutter 应用示例,展示了如何使用 reveal_on_scroll

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Reveal on Scroll Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Reveal on Scroll Example'),
        ),
        body: RevealOnScrollList(
          scrollDirection: Axis.vertical,
          children: List.generate(
            20,
            (index) => RevealOnScrollItem(
              key: ValueKey('item_${index}'),
              item: ListTile(
                leading: Icon(Icons.star),
                title: Text('Item $index'),
              ),
              controller: RevealController(
                initialFraction: 0.0,
                finalFraction: 1.0,
                curve: Curves.easeInOutQuad,
                duration: Duration(milliseconds: 500),
              ),
              revealOffset: Offset(0, -20),  // 调整这个值来设置动画的起始位置
              hideOffset: Offset(0, 20),     // 调整这个值来设置动画的结束位置
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. RevealOnScrollList 是一个自定义的列表组件,它管理滚动和动画的触发。
  2. RevealOnScrollItem 是列表中的每一项,它包含了实际的内容和一个 RevealController,用于控制动画的参数。
  3. initialFractionfinalFraction 定义了动画开始和结束时的进度(从 0.0 到 1.0)。
  4. curve 定义了动画的插值曲线。
  5. duration 定义了动画的持续时间。
  6. revealOffsethideOffset 定义了动画开始和结束时的偏移量,这些偏移量相对于列表项的位置。

当你滚动这个列表时,每个列表项会在进入和离开视图时触发动画效果。你可以根据需要调整动画的参数和偏移量,以实现不同的视觉效果。

回到顶部