{"id":15177460,"url":"https://github.com/kauemurakami/loading-status-button","last_synced_at":"2026-03-09T03:33:29.000Z","repository":{"id":255437848,"uuid":"850114029","full_name":"kauemurakami/loading-status-button","owner":"kauemurakami","description":"LoadingStatusButton is a Flutter package that provides an animated button with support for multiple states. It allows you to visually control the button’s status, including loading, success, and error states, with smooth and customizable animations. Ideal for interfaces that require dynamic visual feedback during asynchronous operations.","archived":false,"fork":false,"pushed_at":"2024-09-05T20:43:35.000Z","size":1224,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T15:42:28.720Z","etag":null,"topics":["button-animation","dart","flutter","flutter-package","flutter-ui","package","pubdev"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/loading_status_button","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/kauemurakami.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":"2024-08-30T23:02:46.000Z","updated_at":"2025-10-12T03:40:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"8389c871-e267-4700-a0dd-c1119851f4b8","html_url":"https://github.com/kauemurakami/loading-status-button","commit_stats":{"total_commits":14,"total_committers":1,"mean_commits":14.0,"dds":0.0,"last_synced_commit":"e292baa34da7ac22ad4f49552c98b6d73d0a0461"},"previous_names":["kauemurakami/loading-status-button"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/kauemurakami/loading-status-button","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauemurakami%2Floading-status-button","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauemurakami%2Floading-status-button/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauemurakami%2Floading-status-button/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauemurakami%2Floading-status-button/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kauemurakami","download_url":"https://codeload.github.com/kauemurakami/loading-status-button/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauemurakami%2Floading-status-button/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30281529,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"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":["button-animation","dart","flutter","flutter-package","flutter-ui","package","pubdev"],"created_at":"2024-09-27T14:22:52.651Z","updated_at":"2026-03-09T03:33:28.955Z","avatar_url":"https://github.com/kauemurakami.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Star on GitHub](https://img.shields.io/github/stars/kauemurakami/loading-status-button.svg?style=flat\u0026logo=github\u0026colorB=deeppink\u0026label=stars)](https://github.com/kauemurakami/loading-status-button) \n## loading_status_button\n\nIt's a flutter package that allows you to manage the state of the button, along with an animation, in addition to loading with animation on the button, you can provide visual feedback like `error` or `success` too, in addition to enabling and disabling it through some logic provided.\n\n\u003cimg src=\"https://github.com/kauemurakami/loading-status-button/raw/main/example/assets/loadingstatusbutton.gif\" width=\"240\" height=\"350\"/\u003e\n\n## Features\n\n`LoadingStatusButton` is a Flutter package that provides an animated button with support for multiple states. It allows you to visually control the `status` of the button, including `loading`, `success` and `error` states, in addition to being able to leave the button enabled or not with `status` `enable` and `disable`.  \nWith smooth and customizable animations, it is ideal for interfaces that require dynamic visual feedback during asynchronous operations.\n\n## Getting started\n\n```\n$ flutter pub add loading_status_button\n```\nor add in your dependencies in `pubspec.yaml`  \n```yaml\ndependencies:\n  loading_status_button:\n```\n\n## Usage\n\nShort example, for a more complex example go to the `/example` folder:  \n```dart\nimport 'package:flutter/material.dart';\nimport 'package:loading_status_button/loading_status_button.dart';\n\nvoid main() {\n  runApp(const MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  const MyApp({super.key});\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Loading Status Button',\n      debugShowCheckedModeBanner: false,\n      theme: ThemeData(\n        useMaterial3: true,\n      ),\n      home: MyHomePage(),\n    );\n  }\n}\n\nclass MyHomePage extends StatelessWidget {\n  MyHomePage({super.key});\n  final LoadingStatusButtonController controller =\n      LoadingStatusButtonController(initialStatus: StatusButton.enable);\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: SafeArea(\n        child: Center(\n          child: Column(\n            mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n            children: [\n              LoadingStatusButtonWidget(\n                callback: () async =\u003e await fakeCallSuccess(),\n                controller: controller,\n                buttonColor: Colors.black,\n                loadingColor: Colors.white,\n                succesIconColor: Colors.green,\n                errorIconColor: Colors.red,\n                widget: const Text(\n                  'Button Success',\n                  style: TextStyle(color: Colors.white, fontSize: 17.0),\n                ),\n              ),\n            ],\n          ),\n        ),\n      ),\n    );\n  }\n\n  fakeCallSuccess() async {\n    await controller.setStatus(StatusButton.loading);\n    //fake fetchData\n    await Future.delayed(const Duration(seconds: 5));\n    await controller.setStatus(StatusButton.success);\n    await controller.setStatus(StatusButton.enable); // or another action, example navigate to another page after success\n  }\n}\n```\nIf you want to remove this controller from memory, we can use the method inherited from `ChangeNotifier`, the method `dispose`  \n```dart\ncontroller.dispose();\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauemurakami%2Floading-status-button","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkauemurakami%2Floading-status-button","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauemurakami%2Floading-status-button/lists"}