{"id":18850764,"url":"https://github.com/gitsunmin/dot_controller","last_synced_at":"2026-04-16T05:33:48.746Z","repository":{"id":213939029,"uuid":"735055304","full_name":"gitsunmin/dot_controller","owner":"gitsunmin","description":"flutter library dot controller","archived":false,"fork":false,"pushed_at":"2024-01-17T23:59:06.000Z","size":4338,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-30T02:48:20.098Z","etag":null,"topics":["dart","flutter","library"],"latest_commit_sha":null,"homepage":"","language":"C++","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/gitsunmin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-23T14:01:40.000Z","updated_at":"2024-12-02T07:49:05.000Z","dependencies_parsed_at":"2024-11-08T03:33:42.709Z","dependency_job_id":"e3bbbe7e-0fa5-4862-bb07-27e2e19a1bb1","html_url":"https://github.com/gitsunmin/dot_controller","commit_stats":null,"previous_names":["gitsunmin/dot","gitsunmin/dot_controller"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gitsunmin/dot_controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitsunmin%2Fdot_controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitsunmin%2Fdot_controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitsunmin%2Fdot_controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitsunmin%2Fdot_controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitsunmin","download_url":"https://codeload.github.com/gitsunmin/dot_controller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitsunmin%2Fdot_controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31872654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"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","flutter","library"],"created_at":"2024-11-08T03:31:15.656Z","updated_at":"2026-04-16T05:33:48.724Z","avatar_url":"https://github.com/gitsunmin.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dot_controller\n\n![logo](./assets/s_logo.png)\n\n**dot_controller** is a Controller, Navigator, and Selector.\n\n\u003e You can run a function by simply moving Dot. You can also change the color and icon of Dot.\n\n# Usage\n\n## 1. Define Your Dot\nyou have to create a \"Dot\" that can move at a point on the screen.\n\n```dart\nScaffold(\n  ...,\n  body: Stack(\n    children: [\n      YourWidget(),\n      DotController(  // \u003c-- this is your Dot\n        actions: [],\n      )\n    ],\n  ),\n);\n    \n```\n\n## 2. Add Your Action\nYou have to declare \"Action,\" the destination of \"Dot.\"\n\n```dart\nScaffold(\n  ...,\n  body: Stack(\n    children: [\n      YourWidget(),\n      DotController(  // \u003c-- this is your Dot\n        actions: [ // \u003c--- your Actions\n          ActionProp(\n            icon: const Icon(Icons.add),\n            onAccept: () {\n              doSomething();\n            },\n          ),\n          ActionProp(\n            icon: const Icon(Icons.remove),\n            onAccept: onAccept: () {\n              doSomething();\n            },\n          ),\n          ActionProp(\n            icon: const Icon(Icons.backspace),\n            onAccept: onAccept: () {\n              doSomething();\n            },\n          ),\n        ],\n      )\n    ],\n  ),\n);\n```\n\n## 3. Add Your Style\nYou can style your \"Dot\" and \"Actions\".\n\n```dart\n\nScaffold(\n  ...,\n  body: Stack(\n    children: [\n      YourWidget(),\n      DotController(  // \u003c-- this is your Dot\n        draggingBackgroundColor: Colors.amber,\n        stickBackgroundColor: Colors.amber,\n        actions: [ // \u003c--- your Actions\n          ActionProp(\n            icon: const Icon(Icons.add),\n            backgroundColor: Colors.white,\n            borderColor: Colors.black,\n            onAccept: () {\n              doSomething();\n            },\n          ),\n          ActionProp(\n            icon: const Icon(Icons.remove),\n            backgroundColor: Colors.red,\n            borderColor: Colors.black,\n            onAccept: onAccept: () {\n              doSomething();\n            },\n          ),\n          ActionProp(\n            icon: const Icon(Icons.backspace),\n            backgroundColor: Colors.yellow,\n            borderColor: Colors.black,\n            onAccept: onAccept: () {\n              doSomething();\n            },\n          ),\n        ],\n      )\n    ],\n  ),\n);\n```\n\n\n# Example\n```dart\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(\n        backgroundColor: Colors.teal,\n        title: Text(widget.title, style: const TextStyle(color: Colors.white)),\n      ),\n      body: Stack(\n        children: [\n          Center(\n            child: Column(\n              mainAxisAlignment: MainAxisAlignment.center,\n              children: \u003cWidget\u003e[\n                const Text(\n                  'Counter',\n                ),\n                Text(\n                  '$_counter',\n                  style: Theme.of(context).textTheme.headlineMedium,\n                ),\n              ],\n            ),\n          ),\n          DotController(\n            draggingBackgroundColor: Colors.amber,\n            stickBackgroundColor: Colors.amber,\n            actions: [\n              ActionProp(\n                icon: const Icon(Icons.add),\n                backgroundColor: Colors.white,\n                borderColor: Colors.black,\n                onAccept: _incrementCounter,\n              ),\n              ActionProp(\n                icon: const Icon(Icons.remove),\n                backgroundColor: Colors.red,\n                borderColor: Colors.black,\n                onAccept: _decrementCounter,\n              ),\n              ActionProp(\n                icon: const Icon(Icons.backspace),\n                backgroundColor: Colors.yellow,\n                borderColor: Colors.black,\n                onAccept: _initCounter,\n              ),\n            ],\n          )\n        ],\n      ),\n    );\n  }\n```\n![example](./assets/example.GIF)\n\n\n# License\n\n[Apache-2.0 license](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitsunmin%2Fdot_controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitsunmin%2Fdot_controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitsunmin%2Fdot_controller/lists"}