优雅的退出Flutter应用

  • 发表于
  • flutter

flutter默认情况下的退出应用是不彻底的,会在后台继续运行VM虚拟机,但一些场景下可能需要强制/彻底关闭应用程序。

Flutter退出/关闭应用

在IOS上没有退出/关闭应用的概念,起码是在编程概念和方法中没有的,唯一的方法是用户手势返回桌面,或用户主动清空后台程序。但是,也有不推荐的方法可实现:

exit(0)

///示例
import 'dart:io';

@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new ... (...),
floatingActionButton: new FloatingActionButton(
onPressed: ()=> exit(0),
tooltip: 'Close app',
child: new Icon(Icons.close),
), 
);
}

上面方法在IOS和Androi上都可行,但又似乎不太对,因为Flutter和IOS都不推荐此种做法,在Android上,使用exit(0)会马上终结VM退出应用,交互上呈现一闪而过或短暂的黑屏。在IOS上,则可能出现无法上架商店。

Android方法

void back(){
if(Navigator.canPop(_context)){
Navigator.pop(_context);
}else{
SystemNavigator.pop(); ///官方推荐方法,但不彻底
    exit(0); ///以编程方式退出,彻底但体验不好
}
}

关于pop方法更多说明。

IOS方法

void back(){
if(Navigator.canPop(_context)){
Navigator.pop(_context);
}else{
    exit(0); ///以编程方式退出,彻底但体验不好
}
}

2、参考此处:https://stackoverflow.com/questions/355168/proper-way-to-exit-iphone-application