Implemented "cancel download" button.
Requires PR #165 to be merged in quickemu.
This commit is contained in:
parent
035efc5e32
commit
b537c74b21
|
@ -33,6 +33,7 @@ class _DownloaderState extends State<Downloader> {
|
|||
late final Stream<double> _progressStream;
|
||||
bool _downloadFinished = false;
|
||||
var controller = StreamController<double>();
|
||||
Process? _process;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
@ -83,6 +84,10 @@ class _DownloaderState extends State<Downloader> {
|
|||
_downloadFinished = true;
|
||||
});
|
||||
});
|
||||
|
||||
setState(() {
|
||||
_process = process;
|
||||
});
|
||||
});
|
||||
return controller.stream;
|
||||
}
|
||||
|
@ -125,6 +130,9 @@ class _DownloaderState extends State<Downloader> {
|
|||
),
|
||||
),
|
||||
CancelDismissButton(
|
||||
onCancel: () {
|
||||
_process?.kill();
|
||||
},
|
||||
downloadFinished: _downloadFinished,
|
||||
),
|
||||
],
|
||||
|
|
|
@ -4,9 +4,11 @@ class CancelDismissButton extends StatelessWidget {
|
|||
const CancelDismissButton({
|
||||
Key? key,
|
||||
required this.downloadFinished,
|
||||
required this.onCancel,
|
||||
}) : super(key: key);
|
||||
|
||||
final bool downloadFinished;
|
||||
final VoidCallback onCancel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -17,7 +19,7 @@ class CancelDismissButton extends StatelessWidget {
|
|||
children: [
|
||||
ElevatedButton(
|
||||
onPressed: !downloadFinished
|
||||
? null
|
||||
? onCancel
|
||||
: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue