flutter如何退出app

在Flutter中如何正确退出应用程序?我尝试使用SystemNavigator.pop()exit(0),但前者只是回到桌面没有真正关闭应用,后者在iOS上会被拒绝审核。有没有跨平台的解决方案能真正终止App运行?官方推荐的做法是什么?

2 回复

在Flutter中,可以使用以下方法退出应用:

import 'package:flutter/services.dart';

SystemNavigator.pop(); // 推荐方式
// 或
exit(0); // 需要导入 'dart:io'

注意:exit(0)会强制终止应用,可能影响用户体验,建议仅在必要时使用。

更多关于flutter如何退出app的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中退出应用程序可以通过以下方法实现:

1. 使用 SystemNavigator.pop()

适用于 Android 平台,退出当前 Activity:

import 'package:flutter/services.dart';

SystemNavigator.pop();

2. 使用 exit(0)

强制终止应用(不推荐,可能导致资源未正确释放):

import 'dart:io';

exit(0);

3. 平台特定实现

通过 MethodChannel 调用原生代码:

Flutter 端:

import 'package:flutter/services.dart';

static const platform = MethodChannel('app.channel.exit');

void exitApp() {
  platform.invokeMethod('exitApp');
}

Android 端(Kotlin):

// MainActivity.kt
private const val CHANNEL = "app.channel.exit"

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
        if (call.method == "exitApp") {
            finishAffinity()
        }
    }
}

iOS 端(Swift):

// AppDelegate.swift
let controller = window?.rootViewController as! FlutterViewController
let channel = FlutterMethodChannel(name: "app.channel.exit", binaryMessenger: controller.binaryMessenger)

channel.setMethodCallHandler { (call, result) in
    if call.method == "exitApp" {
        exit(0)
    }
}

注意事项:

  • 在 iOS 上直接退出应用可能违反 App Store 审核指南
  • 推荐使用系统默认的返回键/手势退出
  • 请根据实际平台需求选择合适方案

建议优先使用 SystemNavigator.pop()(Android)或遵循各平台的界面规范。

回到顶部