Flutter手势滑动返回插件swipe_to_back的使用

Flutter手势滑动返回插件swipe_to_back的使用

Swipe to go back

一个简单的Flutter包,可以帮助你实现像Twitter一样通过向上或向下滑动手势来返回上一页。

Demo

视频

开始使用

只需导航到由该包提供的垂直滑动手势页面,如以下示例所示:

onTap: () => Navigator.of(context).push(
        MaterialPageRoute(
            builder: (context) => const VerticalSwipeBackPage(
                ...[params]
        ),
    ),
),

参数说明:

  ///一个布尔标志,用于设置是否渲染右上角的信息按钮
  final bool showInfoIcon;

  ///信息按钮被点击时执行的回调函数
  final FutureOr<void> Function()? infoIconCallback;

  ///应用于页面框架的背景颜色
  final Color? backgroundColor;

  ///在页面被垂直拖动时不会移动的固定小部件
  final Widget? fixedWidget;

  ///底部操作的小部件列表
  final List<Widget>? bottomActions;

  ///需要拖动的页面主子小部件
  final Widget child;

完整示例

以下是一个完整的示例代码,展示了如何使用swipe_to_back插件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('首页'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) => const VerticalSwipeBackPage(
                showInfoIcon: true,
                infoIconCallback: () async {
                  // 点击信息按钮时执行的操作
                  print("Info Icon Clicked");
                },
                backgroundColor: Colors.lightBlue,
                fixedWidget: Container(
                  color: Colors.red,
                  height: 50,
                  width: double.infinity,
                  alignment: Alignment.center,
                  child: Text('固定小部件'),
                ),
                bottomActions: [
                  ElevatedButton(
                    onPressed: () {
                      print("Bottom Action 1 Clicked");
                    },
                    child: Text('底部动作1'),
                  ),
                  ElevatedButton(
                    onPressed: () {
                      print("Bottom Action 2 Clicked");
                    },
                    child: Text('底部动作2'),
                  ),
                ],
                child: Container(
                  color: Colors.green,
                  height: 300,
                  width: double.infinity,
                  alignment: Alignment.center,
                  child: Text('可拖动的小部件'),
                ),
              ),
            ),
          ),
          child: Text('进入滑动返回页面'),
        ),
      ),
    );
  }
}

更多关于Flutter手势滑动返回插件swipe_to_back的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,下面是一个关于如何在Flutter应用中使用swipe_to_back插件来实现手势滑动返回功能的代码示例。swipe_to_back插件允许用户在iOS和Android设备上通过从屏幕边缘滑动来返回上一页。

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

dependencies:
  flutter:
    sdk: flutter
  swipe_to_back: ^0.0.1  # 请注意版本号,根据实际情况使用最新版本

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

接下来,你可以按照以下步骤在你的Flutter应用中使用这个插件:

  1. 导入插件

在你的Dart文件中导入swipe_to_back插件:

import 'package:swipe_to_back/swipe_to_back.dart';
  1. 应用插件

你可以使用SwipeToBack包装你的页面或Scaffold,以便启用滑动返回功能。下面是一个简单的例子:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Swipe to Back Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SwipeToBack(
        child: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Swipe to Back Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You can swipe from the edge to go back!',
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => SecondPage()),
                );
              },
              child: Text('Go to Second Page'),
            ),
          ],
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: Text('Swipe from the left edge to go back!'),
      ),
    );
  }
}

在这个例子中,SwipeToBack包装了MyHomePage,这使得从屏幕左边缘向右滑动可以返回到上一页。当你点击“Go to Second Page”按钮时,会导航到SecondPage,在那里你也可以通过从屏幕左边缘滑动来返回。

请注意,swipe_to_back插件的具体实现和API可能会随着版本更新而有所变化,因此请参考最新的文档和示例代码。如果你发现上述代码中有任何不兼容的地方,请查阅该插件的最新版本文档。

回到顶部