{"id":32298190,"url":"https://github.com/garlen-javier/floodfill_image","last_synced_at":"2026-03-07T19:33:26.141Z","repository":{"id":56828938,"uuid":"334489031","full_name":"garlen-javier/FloodFill_Image","owner":"garlen-javier","description":"Flutter widget that can use paint bucket functionality on the provided image.","archived":false,"fork":false,"pushed_at":"2022-09-05T05:36:00.000Z","size":109,"stargazers_count":28,"open_issues_count":12,"forks_count":20,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-23T04:53:00.514Z","etag":null,"topics":["dart","flood-fill","flood-fill-algorithm","flutter","flutter-package"],"latest_commit_sha":null,"homepage":"","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/garlen-javier.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/garlenjavier"]}},"created_at":"2021-01-30T18:58:34.000Z","updated_at":"2024-06-12T08:49:42.000Z","dependencies_parsed_at":"2022-08-29T00:20:26.775Z","dependency_job_id":null,"html_url":"https://github.com/garlen-javier/FloodFill_Image","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/garlen-javier/FloodFill_Image","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garlen-javier%2FFloodFill_Image","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garlen-javier%2FFloodFill_Image/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garlen-javier%2FFloodFill_Image/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garlen-javier%2FFloodFill_Image/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/garlen-javier","download_url":"https://codeload.github.com/garlen-javier/FloodFill_Image/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garlen-javier%2FFloodFill_Image/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280563531,"owners_count":26351731,"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-23T02:00:06.710Z","response_time":142,"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":["dart","flood-fill","flood-fill-algorithm","flutter","flutter-package"],"created_at":"2025-10-23T04:53:20.226Z","updated_at":"2025-10-23T04:53:23.710Z","avatar_url":"https://github.com/garlen-javier.png","language":"Dart","funding_links":["https://www.paypal.me/garlenjavier","https://ko-fi.com/garlen"],"categories":[],"sub_categories":[],"readme":"# Flood Fill Image\n\n[![Version](https://img.shields.io/pub/v/floodfill_image.svg)](https://pub.dev/packages/floodfill_image) ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat) [![Support](https://img.shields.io/badge/Buy%20Me%20Coffee-Support-orange?style=flat\u0026logo=buy-me-a-coffee)](https://ko-fi.com/garlen)\n\n## Overview\n\nFlutter widget that can use paint bucket functionality on the provided image using Queue-Linear Flood Fill Algorithm by J. Dunlap. For more info check out my blog : [Flood Fill in Flutter](https://www.meekcode.com/blog/flood-fill-in-flutter)\n\nKindly like:+1: the package at [pub dev](https://pub.dev/packages/floodfill_image) or star:star: the repo in [github](https://github.com/garlen-javier/FloodFill_Image) if you find this library useful. :wink:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/71249192/106970202-59d04780-6787-11eb-81ca-2cd000b900d7.gif\" alt=\"demo dog gif\" width=400 height=600 /\u003e\n\u003c/p\u003e\n\n## Usage\n\n```dart\nFloodFillImage(\n    imageProvider: AssetImage(\"assets/dog.jpg\"),\n    fillColor: Colors.amber,\n    avoidColor: [Colors.transparent, Colors.black],\n)\n```\n\n## Parameters\n\n| Name | Type | Description |\n|---|---|---|\n| `imageProvider` | ImageProvider | The image to display via ImageProvider. \u003cbr\u003eYou can use `AssetImage` or `NetworkImage`. |\n| `fillColor` | Color | Color use for filling the area. |\n| `isFillActive` | bool | Set *false* if you want to disable on touch fill function. \u003cbr\u003eDefault value is *true*. |\n| `avoidColor` | List\\\u003cColor\u003e | List of color that determines to which `Color` is/are needed to be avoided upon touch. \u003cbr\u003e**Note:** Nearest color shade is applied. |\n| `tolerance` | int | Set fill value *tolerance* that ranges from 0 to 100. \u003cbr\u003eDefault value is 8. |\n| `width` | int | Width of the image. Parent widget width will be prioritize if it's provided and less than the image width. |\n| `height` | int | Height of the image. Parent widget height will be prioritize if it's provided and less than the image height. |\n| `alignment` | AlignmentGeometry | Alignment of the image. |\n| `loadingWidget` | Widget | Widget to show while the image is being processed on initialization. \u003cbr\u003eIt uses `CircularProgressIndicator` by default. |\n| `onFloodFillStart` | Function(Offset position,Image image) | Callback function that returns the touch position and an `Image` from *dart:ui* when flood fill starts. \u003cbr\u003e**Note:** Touch coordinate is relative to the image dimension. |\n| `onFloodFillEnd` | Function(Image image) | Callback function that returns an `Image` from *dart:ui* when flood fill ended. |\n\n## Coffee\n\n\u003ca href=\"https://ko-fi.com/garlen\" target=\"_blank\" rel=\"noreferrer\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/black_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\n## License\n\nMIT License, see the [LICENSE.md](https://github.com/garlen-javier/FloodFill_Image/blob/main/LICENSE) file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarlen-javier%2Ffloodfill_image","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgarlen-javier%2Ffloodfill_image","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarlen-javier%2Ffloodfill_image/lists"}