{"id":32278319,"url":"https://github.com/yasin1376/loading_btn","last_synced_at":"2026-02-23T17:02:56.688Z","repository":{"id":63961824,"uuid":"572156810","full_name":"yasin1376/loading_btn","owner":"yasin1376","description":"An animated loading button package in Flutter","archived":false,"fork":false,"pushed_at":"2022-11-30T11:49:27.000Z","size":545,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-08-09T13:57:45.669Z","etag":null,"topics":["loading-animations","loading-button","loading-indicator"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/loading_btn","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/yasin1376.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}},"created_at":"2022-11-29T17:11:07.000Z","updated_at":"2023-04-24T19:53:40.000Z","dependencies_parsed_at":"2023-01-22T08:10:41.487Z","dependency_job_id":null,"html_url":"https://github.com/yasin1376/loading_btn","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"purl":"pkg:github/yasin1376/loading_btn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasin1376%2Floading_btn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasin1376%2Floading_btn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasin1376%2Floading_btn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasin1376%2Floading_btn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yasin1376","download_url":"https://codeload.github.com/yasin1376/loading_btn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasin1376%2Floading_btn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29748799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["loading-animations","loading-button","loading-indicator"],"created_at":"2025-10-23T00:19:59.097Z","updated_at":"2026-02-23T17:02:56.683Z","avatar_url":"https://github.com/yasin1376.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nThis README describes the package. If you publish this package to pub.dev,\nthis README's contents appear on the landing page for your package.\n\nFor information about how to write a good package README, see the guide for\n[writing package pages](https://dart.dev/guides/libraries/writing-package-pages).\n\nFor general information about developing packages, see the Dart guide for\n[creating packages](https://dart.dev/guides/libraries/create-library-packages)\nand the Flutter guide for\n[developing packages and plugins](https://flutter.dev/developing-packages).\n--\u003e\n\n## Loading Btn\n\nCreate animated loading button using loading_btn package with lots of properties.\n\n## Getting started\n\nLoading Btn package helps you create beautiful loading animation in your buttons with customized\nloader. Loading Btn is basically an ElevatedButton widget that means you can use the usual\nparameters with a few extra functionalities.\n\n## Demo\n\n\u003cimg src='https://github.com/yasin1376/loading_btn/blob/master/demo/loading_btn.gif?raw=true' height='480px' /\u003e\n\n## Usage\n\n### Loading Button with CircularProgress widget\n\n```dart\nLoadingBtn(\n    height: 50,\n    borderRadius: 8,\n    animate: true,\n    color: Colors.green,\n    width: MediaQuery.of(context).size.width * 0.45,\n    loader: Container(\n        padding: const EdgeInsets.all(10),\n        width: 40,\n        height: 40,\n        child: const CircularProgressIndicator(\n            valueColor: AlwaysStoppedAnimation\u003cColor\u003e(Colors.white),\n        ),\n    ),\n    child: const Text(\"Login\"),\n    onTap: (startLoading, stopLoading, btnState) async {\n        if (btnState == ButtonState.idle) {\n            startLoading();\n            // call your network api\n            await Future.delayed(const Duration(seconds: 5));\n            stopLoading();\n        }\n    },\n),\n```\n\n### Loading Button with custom Text\n\n```dart\nLoadingBtn(\n    height: 50,\n    borderRadius: 8,\n    roundLoadingShape: false,\n    color: Colors.blueAccent,\n    width: MediaQuery.of(context).size.width * 0.45,\n    minWidth: MediaQuery.of(context).size.width * 0.30,\n    loader: const Text(\"Loading...\"),\n    child: const Text(\"Login\"),\n    onTap: (startLoading, stopLoading, btnState) async {\n        if (btnState == ButtonState.idle) {\n            startLoading();\n            // call your network api\n            await Future.delayed(const Duration(seconds: 5));\n            stopLoading();\n        }\n    },\n),\n```\n\n### Loading Button with custom loading\n\n```dart\nLoadingBtn(\n    height: 50,\n    borderRadius: 8,\n    animate: true,\n    color: Colors.deepOrange,\n    width: MediaQuery.of(context).size.width * 0.45,\n    loader: Container(\n      padding: const EdgeInsets.all(10),\n      child: const Center(\n          child: SpinKitDoubleBounce(\n            color: Colors.white,\n          ),\n      ),\n    ),\n    child: const Text(\"Login\"),\n    onTap: (startLoading, stopLoading, btnState) async {\n        if (btnState == ButtonState.idle) {\n            startLoading();\n            // call your network api\n            await Future.delayed(const Duration(seconds: 5));\n            stopLoading();\n        }\n    },\n),\n```\n\n## Properties\n\n* **animate(Default false)** : It uses width to animate while click on button\n* **roundLoadingShape(Default true)** : It uses borderRadius to creates a round button while in Busy/Loading state\n* **width** : Width of the button when in Idle state\n* **minWidth** : Width of the button when in Busy/Loading state. Default value is equal to height in order to create a completely round loading button \n* **borderRadius** : Border Radius of the button\n* **borderSide** : BorderSide in order to give border color and width to the button \n* **child** : Contents of button when in Idle state \n* **loader** : Contents of button when in Busy/Loading state \n* **onTap** : (startLoading, stopLoading, btnState) : Function that is called when you click on the button\n* **duration** : Duration of the animation \n* **curve** : Curve of animation\n* **reverseCurve** : Curve of reverse animation\n\n## MIT License\n\nCopyright (c) 2022 Yasin Mohammadi\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasin1376%2Floading_btn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyasin1376%2Floading_btn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasin1376%2Floading_btn/lists"}