Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter can';t在应用程序退出时调用dispose()方法_Flutter_Dart - Fatal编程技术网

Flutter can';t在应用程序退出时调用dispose()方法

Flutter can';t在应用程序退出时调用dispose()方法,flutter,dart,Flutter,Dart,我想在应用程序退出时调用一个方法保存在SharedReferences中 我试过了,但没用 @override void dispose() { print("exit"); _subscription.cancel(); saveCounter(); super.dispose(); } Future<void> saveCounter() async{ final prefs = await SharedPreferences.getInstanc

我想在应用程序退出时调用一个方法保存在SharedReferences中

我试过了,但没用

 @override
void dispose() {
  print("exit");
  _subscription.cancel(); 
  saveCounter(); 
  super.dispose();
}

Future<void> saveCounter() async{
    final prefs = await SharedPreferences.getInstance();
    await prefs.setInt('startNumber', _steps);
}
@覆盖
无效处置(){
打印(“退出”);
_订阅。取消();
saveCounter();
super.dispose();
}
Future saveCounter()异步{
final prefs=wait SharedPreferences.getInstance();
等待prefs.setInt('startNumber',_步数);
}
  • 我们可以使用
    WillPopScope
  • 我们可以在函数中执行saveCounter
  • 确保它将返回包装在
    Future.value()中的true
类WillPopScreen扩展了无状态小部件{
Future saveCounter()异步{
final prefs=wait SharedPreferences.getInstance();//我们可以保存状态
等待prefs.setInt('startNumber',_步数);
}
Future onCloseEvent()异步{
等待saveCounter();
return Future.value(true);//我们不能设置“return true”
}
@凌驾
小部件构建(构建上下文){
返回式示波器(
onWillPop:onCloseEvent,//将中断我们的脚手架解雇
孩子:脚手架(
appBar:appBar(
标题:文本(“将弹出中断”),
),
正文:中(
子项:文本(“关闭时执行方法”),
),
),
);
}
}
全面运作回购 你可以在这里自己建造

演示

您将处置方法放在哪里?它在statefulwidget上吗?@ejabu是的,它的statefulwidget类返回框架不工作,我希望它在有人关闭服务器时运行app@suhaibsalem运气好吗?我也在寻找同样的。从最近打开的应用程序托盘中删除/关闭应用程序时如何释放资源