{"id":32649272,"url":"https://github.com/shadow60539/flutter_preload_videos","last_synced_at":"2025-10-31T06:53:38.707Z","repository":{"id":39905432,"uuid":"389307312","full_name":"Shadow60539/flutter_preload_videos","owner":"Shadow60539","description":"Preloading videos in Flutter 💙","archived":false,"fork":false,"pushed_at":"2023-04-23T07:33:52.000Z","size":41152,"stargazers_count":134,"open_issues_count":5,"forks_count":40,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-18T16:54:20.928Z","etag":null,"topics":["api","bloc","dart","flutter","preload","provider","video","video-player"],"latest_commit_sha":null,"homepage":"https://medium.com/@sanjeevmadhav03/preloading-videos-in-flutter-4b65cf0681c6","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shadow60539.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-25T09:16:37.000Z","updated_at":"2025-04-15T13:26:39.000Z","dependencies_parsed_at":"2024-11-12T05:40:42.303Z","dependency_job_id":null,"html_url":"https://github.com/Shadow60539/flutter_preload_videos","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Shadow60539/flutter_preload_videos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shadow60539%2Fflutter_preload_videos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shadow60539%2Fflutter_preload_videos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shadow60539%2Fflutter_preload_videos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shadow60539%2Fflutter_preload_videos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shadow60539","download_url":"https://codeload.github.com/Shadow60539/flutter_preload_videos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shadow60539%2Fflutter_preload_videos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281946316,"owners_count":26587973,"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","status":"online","status_checked_at":"2025-10-31T02:00:07.401Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api","bloc","dart","flutter","preload","provider","video","video-player"],"created_at":"2025-10-31T06:53:24.233Z","updated_at":"2025-10-31T06:53:38.697Z","avatar_url":"https://github.com/Shadow60539.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Dart](https://img.shields.io/badge/Dart-0175C2?logo=dart\u0026logoColor=white)](https://pub.dev/packages/fancy_text_reveal)  ![Flutter](https://img.shields.io/badge/Flutter-02569B?logo=flutter\u0026logoColor=white)\n\n\n\n![lib](images/poster.png)\n# Flutter Preload Videos from API\n\n\n### Introduction 🚀\n\n\u003e Preloading logic to reduce video initialization using isolate to fetch videos in the background so that the video experience is not disturbed.\n\n\u003e Without the use of isolate, the video will be paused whenever there is an API call because the main thread will be busy fetching new video URLs.\n\n\u003e More about isolate: 🌐 https://blog.codemagic.io/understanding-flutter-isolates/\n\n### Demo 👀\n\n\n![Output sample](images/demo.gif)\n\n### Logic 🎯\n\n![lib](images/logic.png)\n\n\n\n\n### Usage 🎨\n\nTo clone and run this application, you'll need [git](https://git-scm.com) and [flutter](https://flutter.dev/docs/get-started/install) installed on your computer. From your command line:\n\n```bash\n# Clone this repository\n$ git clone https://github.com/Shadow60539/flutter_preload_videos.git\n\n# Go into the repository\n$ cd flutter_preload_videos\n\n# Install dependencies\n$ flutter packages get\n\n# Run the app\n$ flutter run\n```\n\n\n### Packages 📦\n\n\n\nPackage | Description\n---|---\n[video_player](https://pub.flutter-io.cn/packages/video_player) | Render videos in Flutter\n[build_runner](https://pub.flutter-io.cn/packages/build_runner) | Build Custom Models\n[flutter_bloc](https://pub.flutter-io.cn/packages/flutter_bloc) | BLoC State Management\n[freezed](https://pub.flutter-io.cn/packages/freezed) | Code generation for immutable classes\n\n### Directory Structure 🏢\n\nThe project directory structure is as follows:\n\n```\n├── android\n├── asset\n├── build\n├── images\n├── ios\n├── lib\n├── test\n├── analysis_options.yaml\n├── pubspec.lock\n├── pubspec.yaml\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshadow60539%2Fflutter_preload_videos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshadow60539%2Fflutter_preload_videos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshadow60539%2Fflutter_preload_videos/lists"}