Flutter滑动效果插件swipe_effect的使用

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

Flutter滑动效果插件swipe_effect的使用

插件描述

此README描述了swipe_effect插件的功能。如果您将此插件发布到pub.dev,其内容将出现在您的包的着陆页面上。

有关如何编写良好的包README的信息,请参阅撰写包页面指南。有关开发包的一般信息,请参阅Dart指南创建库包和Flutter指南开发包和插件

使用示例

SwipeEffect(
  direction: TextDirection.rtl, 
  color: Colors.green.withAlpha(70),
  verticalTolerance: 1.0,
  startDeltaPx: 30.0,
  callbackDeltaRatio: 0.25,
  callback: () {
    // Navigator.pop(context);
  },
  child: ...,
);

展示

Swiper Effect GIF

参数说明

参数 描述
child 子组件
callback 触发滑动动作后的回调函数
color 效果曲线的颜色
direction 滑动方向 TextDirection.ltrTextDirection.rtl
verticalTolerance 双精度值,表示从屏幕高度确定的比例,在垂直轴滑动后效果将被取消。
callbackDeltaRatio 双精度值,表示从屏幕宽度触发回调的比例。
startDeltaPx 确定从组件开始位置(以像素为单位)的效果

作者

示例代码

import 'package:example/screens/first_exapmle.dart';
import 'package:example/screens/seconde_example.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      routes: {
        "demo": (ctx) => const Demo(),
        "first": (ctx) => const FirstExample(),
        "second": (ctx) => const SecondExample(),
      },
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: "demo",
    );
  }
}

class Demo extends StatelessWidget {
  const Demo({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Swipe Effect Demo')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            MaterialButton(
              color: Colors.blueAccent,
              onPressed: () => Navigator.of(context).pushNamed("first"),
              padding: const EdgeInsets.all(50),
              child: const Text(
                "Example 1",
                style: TextStyle(color: Colors.white, fontSize: 24),
              ),
              highlightColor: Colors.transparent,
              splashColor: Colors.blueAccent.shade100,
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(10)),
            ),
            const SizedBox(
              height: 20,
            ),
            MaterialButton(
              color: Colors.greenAccent,
              highlightColor: Colors.transparent,
              onPressed: () => Navigator.of(context).pushNamed("second"),
              padding: const EdgeInsets.all(50),
              child: const Text(
                "Example 2",
                style: TextStyle(color: Colors.white, fontSize: 24),
              ),
              splashColor: Colors.greenAccent.shade100,
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(10)),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter滑动效果插件swipe_effect的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter滑动效果插件swipe_effect的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter中的swipe_effect插件来实现滑动效果的代码示例。swipe_effect插件允许你在Flutter应用中轻松添加滑动动画效果。不过请注意,由于插件的更新和版本变化,以下代码可能需要根据你实际使用的插件版本进行调整。

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

dependencies:
  flutter:
    sdk: flutter
  swipe_effect: ^最新版本号  # 替换为实际的最新版本号

然后运行flutter pub get来获取依赖。

接下来是一个简单的示例代码,展示如何使用swipe_effect来实现基本的滑动动画效果:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Swipe Effect Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Swipe Effect Demo'),
        ),
        body: Center(
          child: SwipeEffect(
            // 滑动方向,可以是 Axis.horizontal 或 Axis.vertical
            axis: Axis.horizontal,
            // 子组件,即你想要添加滑动效果的组件
            child: Container(
              width: 200,
              height: 200,
              color: Colors.blue,
              child: Center(
                child: Text(
                  'Swipe Me',
                  style: TextStyle(color: Colors.white, fontSize: 24),
                ),
              ),
            ),
            // 滑动开始时的回调
            onStart: (details) {
              print('Swipe started: $details');
            },
            // 滑动更新时的回调
            onUpdate: (details) {
              print('Swipe updating: $details');
            },
            // 滑动结束时的回调
            onEnd: (details) {
              print('Swipe ended: $details');
            },
            // 滑动完成时的回调(通常用于确认滑动是否成功)
            onComplete: (details) {
              print('Swipe completed: $details');
              // 可以在这里添加逻辑,比如跳转到另一个页面
            },
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个可以水平滑动的蓝色方块。SwipeEffect组件包裹了这个方块,并提供了几个回调函数来处理滑动的不同阶段。

  • onStart:当滑动开始时调用。
  • onUpdate:当滑动进行时持续调用。
  • onEnd:当滑动结束时调用,但不一定意味着滑动成功(例如,用户可能只进行了一半的滑动操作)。
  • onComplete:当滑动成功完成时调用(这取决于你对“成功完成”的定义,可能需要根据滑动距离或速度来判断)。

你可以根据自己的需求调整这些回调函数,以实现更复杂的交互逻辑。同时,SwipeEffect还提供了其他配置选项,如滑动阈值、动画曲线等,你可以查阅其官方文档以获取更多信息。

回到顶部