Flutter应用退出插件flutter_close_app的使用

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

Flutter应用退出插件flutter_close_app的使用

简介

这是一个简单且灵活的Flutter应用退出插件。在Android上,需要按两次返回键才能退出应用;在MacOS、iOS、Windows和Linux上,点击一次即可关闭应用。

功能特性

  • 双击返回键退出应用
    • 自定义时间间隔
    • 自定义提示消息
    • 自定义匹配条件
    • 支持Android
  • 单击退出应用
    • 支持iOS
    • 支持MacOS
    • 支持Windows
    • 支持Linux

截图

示例截图

使用方法

依赖安装

在终端中运行以下命令来添加插件:

flutter pub add flutter_close_app

或者在pubspec.yaml文件中添加:

dependencies:
  flutter_close_app: ^1.0.0
导入包

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

import 'package:flutter_close_app/flutter_close_app.dart';

示例代码

双击返回键退出应用
class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FlutterCloseAppPage(
      // 当条件不满足时(如第一次按下或第二次按下间隔超过2秒),显示提示消息
      onCloseFailed: () {
        ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
          content: Text('Press again to exit 🎉'), // 提示用户再次按下退出
        ));
      },
      child: Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Text('Home Page'),
        ),
      ),
    );
  }
}
单击退出应用
FlutterCloseApp.close(); // 调用此方法即可实现单击退出应用
高级使用
class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    int tabIndex = 0; // 假设tabIndex为当前页面索引

    return FlutterCloseAppPage(
      interval: 3, // 自定义间隔时间为3秒
      condition: tabIndex == 0, // 仅在首页时允许退出
      onCloseFailed: () {
        // 如果不在首页,则不提示
        if (tabIndex != 0) return;
        // 当条件不满足时(如第一次按下或第二次按下间隔超过3秒),显示提示消息
        ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
          content: Text('Press again to exit 🎉'),
        ));
      },
      child: Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Text('Home Page'),
        ),
      ),
    );
  }
}

完整示例Demo

import 'package:flutter/material.dart';
import 'package:flutter_close_app/flutter_close_app.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 const MaterialApp(home: HomePage());
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FlutterCloseAppPage(
      interval: 2, // 设置间隔时间为2秒
      condition: true, // 默认条件为true,即始终允许退出
      onCloseFailed: () {
        // 当间隔时间超过2秒或首次按下返回键时,显示提示消息
        ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
          content: Text('Press again to exit 🎉'),
        ));
      },
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Close App'),
        ),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              const ListTile(
                leading: Icon(
                  Icons.android,
                  color: Colors.green,
                ),
                title: Text('Double back to exit app'),
              ),
              const Divider(),
              ListTile(
                leading: const Icon(
                  Icons.exit_to_app,
                  color: Colors.red,
                ),
                title: const Text('Tap close app'),
                onTap: () {
                  FlutterCloseApp.close(); // 单击退出应用
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter应用退出插件flutter_close_app的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用退出插件flutter_close_app的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于在Flutter应用中使用flutter_close_app插件来实现应用退出的功能,下面是一个简单的代码示例。这个示例展示了如何集成flutter_close_app插件并在按钮点击时退出应用。

首先,你需要在pubspec.yaml文件中添加flutter_close_app依赖:

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

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

接下来,在你的Dart代码中,你可以按照以下步骤使用flutter_close_app插件:

  1. 导入插件包。
  2. 使用CloseApp.close()方法来退出应用。

下面是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_close_app/flutter_close_app.dart';  // 导入插件

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Close App Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Close App Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 调用插件的close方法来退出应用
            CloseApp.close();
          },
          child: Text('Exit App'),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击这个按钮时,CloseApp.close()方法会被调用,这将导致应用退出。

请注意,在某些平台上(特别是iOS),直接退出应用可能不被推荐,因为iOS期望应用通过用户的交互(如滑动退出)或者系统事件(如内存警告)来退出。因此,在真实的应用中,你可能需要根据平台的不同来调整退出逻辑,或者仅在特定情况下提供退出选项。

此外,务必确保你了解并遵守相关平台的应用开发指南和最佳实践。

回到顶部