Как программно закрыть приложение Flutter. Я попытался выскочить единственный экран, но в результате черный экран.
Флаттер, как программно выйти из приложения
Ответ 1
Ниже отлично работал со мной как на Android
и на iOS
, я использовал exit(0)
от dart:io
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),
),
);
}
ОБНОВЛЕНИЕ Январь 2019 г. Предпочтительным решением является:
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
Как описано здесь
Ответ 2
Вы можете сделать это с помощью SystemNavigator.pop()
.
Ответ 3
Ответы уже предоставлены, но, пожалуйста, не копируйте и не вставляйте их в базу кода, не зная, что вы делаете:
Если вы используете SystemChannels.platform.invokeMethod('SystemNavigator.pop');
, обратите внимание, что doc явно упоминает:
Указывает системному навигатору удалить это действие из стека и вернитесь к предыдущему действию.
На iOS вызовы этого метода игнорируются, потому что Apple человек В руководстве по интерфейсу указано, что приложения не должны выходить сами.
Вы можете использовать exit(0)
. И это немедленно прервет процесс Dart VM с заданным кодом выхода. Но помните, что док говорит:
Это не ожидает завершения каких-либо асинхронных операций. С помощью следовательно, выход может привести к потере данных.
В любом случае, документ также отметил SystemChannels.platform.invokeMethod('SystemNavigator.pop');
:
Этот метод должен быть предпочтительнее вызова метода dart: io, так как последнее может заставить основную платформу действовать так, как если бы Приложение упало.
Итак, помните, что вы делаете.
Ответ 4
Для iOS
SystemNavigator.pop()
: НЕ РАБОТАЕТ
exit(0)
: работает, но Apple может ПОДДЕРЖИТЬ ВАШЕ ПРИЛОЖЕНИЕ, потому что это противоречит рекомендациям Apple Human Interface для программного выхода из приложения.
Для Android
SystemNavigator.pop()
: работает и является РЕКОМЕНДУЕМЫМ способом выхода из приложения.
exit(0)
: также работает, но он НЕ РЕКОМЕНДУЕТСЯ, поскольку он немедленно завершает процесс Dart VM, и пользователь может подумать, что приложение только что упало.