{"id":13551460,"url":"https://github.com/fluttervn/isolate_woker","last_synced_at":"2026-02-01T14:04:54.070Z","repository":{"id":122538975,"uuid":"199995982","full_name":"fluttervn/isolate_woker","owner":"fluttervn","description":"Library help run flutter tasks in other isolate","archived":false,"fork":false,"pushed_at":"2020-01-02T04:56:31.000Z","size":636,"stargazers_count":55,"open_issues_count":1,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-03T21:35:45.502Z","etag":null,"topics":["android","background-thread","background-worker","backgroundtask","flutter","ios","isolate"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluttervn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-08-01T07:02:09.000Z","updated_at":"2024-07-12T14:53:22.000Z","dependencies_parsed_at":"2024-01-16T19:18:06.374Z","dependency_job_id":"8ae415ba-6284-4397-a467-345220567da1","html_url":"https://github.com/fluttervn/isolate_woker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttervn%2Fisolate_woker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttervn%2Fisolate_woker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttervn%2Fisolate_woker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttervn%2Fisolate_woker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluttervn","download_url":"https://codeload.github.com/fluttervn/isolate_woker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246922243,"owners_count":20855341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","background-thread","background-worker","backgroundtask","flutter","ios","isolate"],"created_at":"2024-08-01T12:01:48.673Z","updated_at":"2026-02-01T14:04:54.063Z","avatar_url":"https://github.com/fluttervn.png","language":"Dart","readme":"# isolate_worker\n\n[![Build Status](https://travis-ci.org/fluttervn/isolate_woker.svg?branch=master)](https://travis-ci.org/fluttervn/isolate_woker)\n\nLibrary help run flutter tasks in other isolate. The library improve from original library: https://github.com/Dreckr/Worker\nImprovement:\n- Return callback progress for upload/download file\n- Support cancel download/upload file\n\n## Usage\n\nDefine class:\n```dart\nclass DownloadTask implements FileTask\u003cFuture\u003cbool\u003e\u003e {\n  final Dio dio;\n  final String url;\n  final String savePath;\n  CancelToken cancelToken;\n\n  DownloadTask(\n      {@required this.dio, @required this.url, this.savePath, this.taskId});\n\n  @override\n  Future\u003cbool\u003e execute() {\n    return _doExecute();\n  }\n\n  Future\u003cbool\u003e _doExecute() async {\n    cancelToken = CancelToken();\n    var completer = Completer\u003cbool\u003e();\n\n    try {\n      final response = await dio.download(url, savePath,\n          cancelToken: cancelToken, onReceiveProgress: taskProgressCallback);\n\n      print('DownloadTask success: $response');\n      completer.complete(true);\n    } catch (e) {\n      print('DownloadTask error: $e');\n      completer.completeError(e);\n    }\n\n    return completer.future;\n  }\n\n  @override\n  ActionType actionType = ActionType.download;\n\n  @override\n  String taskId;\n\n  @override\n  var taskProgressCallback;\n\n  @override\n  void handleCancel(String taskId) {\n    cancelToken?.cancel('Cancel download $taskId');\n  }\n}\n```\nUse:\n```dart\nFunction(TransferProgress progress) progressCallback = (progress) {\n      setState(() {\n        percent = progress.count / progress.total;\n      });\n    };\n\n    var saveFolder = await Utils.getDownloadDirectory('Demo/Download');\n    final fullPath = '${saveFolder.path}/download.jpg';\n    final urlPath = 'https://sample-videos.com/img/Sample-jpg-image-2mb.jpg';\n    final dio = Dio();\n    var downloadTask = DownloadTask(\n        taskId: fullPath, dio: dio, url: urlPath, savePath: fullPath);\n    final worker = Worker(poolSize: 1);\n    await worker.handle(downloadTask, callback: progressCallback);\n    setState(() {\n      loading = false;\n      imagePath = fullPath;\n    });\n```\nPlease refer to [my post on Medium](https://medium.com/fluttervn/run-your-code-in-background-easily-with-flutter-2e98d94f30de?source=friends_link\u0026sk=2be1198ef7b5a5cb8191117e7339f536) for more details\n\n## Authors\n- [anlam87](https://github.com/anticafe) (anlam12787@gmail.com)\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttervn%2Fisolate_woker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluttervn%2Fisolate_woker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttervn%2Fisolate_woker/lists"}