Bagaimana cara menutup aplikasi Flutter secara terprogram. Saya sudah mencoba memunculkan satu-satunya layar tetapi itu menghasilkan layar hitam.
107
SystemNavigator.pop()
: TIDAK BEKERJA
exit(0)
: Berfungsi tetapi Apple dapat MENANGGUHKAN APLIKASI ANDA karena melanggar pedoman Antarmuka Manusia Apple untuk keluar dari aplikasi secara terprogram.
SystemNavigator.pop()
: Bekerja dan merupakan cara yang DIANJURKAN untuk keluar dari aplikasi.
exit(0)
: Juga berfungsi tetapi TIDAK DIANJURKAN karena menghentikan proses VM Dart dengan segera dan pengguna mungkin berpikir bahwa aplikasi baru saja rusak.
SystemNavigator.pop()
tidak berfungsi pada emulator Android. Aplikasi masih bekerja di latar belakang. Jadi saya tidak yakin apakah itu akan berfungsi dengan baik di perangkat nyata.exit(0)
untuk kebutuhan Anda.SystemNavigator.pop()
keluar dari aplikasi saya dan menampilkan pesan macet,exit(0)
berfungsi seperti yang diharapkanDi bawah bekerja sempurna dengan saya di keduanya
Android
daniOS
, saya digunakanexit(0)
daridart: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), ), ); }
UPDATE Jan 2019 Solusi yang lebih disukai adalah:
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
Seperti yang dijelaskan di sini
sumber
t work for me... I
mencoba menambahkan tombol keluar ke CupertinoTabScafold. Dengan () => exit (0), ini memberikan layar kosong dengan tabbar.Anda bisa melakukan ini dengan
SystemNavigator.pop()
.sumber
exit(0);
tidak berhasilSystemNavigator.pop
diabaikan karena pedoman antarmuka manusia Apple menyatakan bahwa aplikasi tidak boleh keluar sendiri. Di Android, ini harus berfungsi, dan lebih disukai daripada memanggildart:io
metode keluar. Pertimbangkan untuk mengajukan masalah: github.com/flutter/flutter/issues/newJawaban sudah disediakan tetapi tolong jangan hanya menyalin dan menempelkannya ke basis kode Anda tanpa mengetahui apa yang Anda lakukan:
Jika Anda menggunakan
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
catatan bahwa dokumen dengan jelas menyebutkan:Anda bisa menggunakan
exit(0)
. Dan itu akan menghentikan proses VM Dart segera dengan kode keluar yang diberikan. Tapi ingat dokter itu mengatakan:Pokoknya dokter juga mencatat
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
:Jadi, ingatlah terus apa yang Anda lakukan.
sumber
Saya lebih suka menggunakan
Future.delayed(const Duration(milliseconds: 1000), () { SystemChannels.platform.invokeMethod('SystemNavigator.pop'); });
Meskipun, exit (0) juga berfungsi tetapi aplikasi menutup secara tiba-tiba dan tidak terlihat bagus, sepertinya aplikasi tersebut macet.
Future.delayed(const Duration(milliseconds: 1000), () { exit(0); });
sumber
Ini berhasil untuk saya;
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), ), ); }
sumber
Anda dapat memanggil ini dengan memeriksa kondisi ketergantungan platform. melakukan tindakan berbeda dengan klik untuk android dan ios.
import 'dart:io' show Platform; import 'package:flutter/services.dart'; RaisedButton( onPressed: () { if (Platform.isAndroid) { SystemNavigator.pop(); } else if (Platform.isIOS) { exit(0); } }, child: Text("close app"), )
sumber
Di bawah ini bekerja sempurna dengan impor Android 'dart: io';
@override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new ... (...), floatingActionButton: new FloatingActionButton( onPressed: ()=> SystemNavigator.pop(), tooltip: 'Close app', child: new Icon(Icons.close), ), ); }
sumber
SystemNavigator.pop()
tidak berfungsi di iOS, harap baca jawaban saya. Tidak ada cara untuk keluar di aplikasi iOS setidaknya untuk hari ini.