diff --git a/lib/src/pages/downloader.dart b/lib/src/pages/downloader.dart index f1f332f..154801c 100644 --- a/lib/src/pages/downloader.dart +++ b/lib/src/pages/downloader.dart @@ -33,6 +33,7 @@ class _DownloaderState extends State { late final Stream _progressStream; bool _downloadFinished = false; var controller = StreamController(); + Process? _process; @override void initState() { @@ -83,6 +84,10 @@ class _DownloaderState extends State { _downloadFinished = true; }); }); + + setState(() { + _process = process; + }); }); return controller.stream; } @@ -125,6 +130,9 @@ class _DownloaderState extends State { ), ), CancelDismissButton( + onCancel: () { + _process?.kill(); + }, downloadFinished: _downloadFinished, ), ], diff --git a/lib/src/widgets/downloader/cancel_dismiss_button.dart b/lib/src/widgets/downloader/cancel_dismiss_button.dart index c542512..1fb5ada 100644 --- a/lib/src/widgets/downloader/cancel_dismiss_button.dart +++ b/lib/src/widgets/downloader/cancel_dismiss_button.dart @@ -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(); },