[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9381":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":16,"starSnapshotCount":16,"syncStatus":42,"lastSyncTime":43,"discoverSource":44},9381,"flutter_easyloading","nslogx\u002Fflutter_easyloading","nslogx","✨A clean and lightweight loading\u002Ftoast widget for Flutter, easy to use without context, support iOS、Android and Web","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_easyloading",null,"Dart",1333,249,8,93,0,55.19,"MIT License",false,"develop",true,[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"android","custom-animation","dart","dartlang","flutter","flutter-easyloading","flutter-package","flutter-plugin","flutter-toast","flutter-widget","indicator","ios","loading","spinkit","toast","widget","2026-06-12 04:00:44","# Flutter EasyLoading\n\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fflutter_easyloading?style=flat)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_easyloading) [![pub points](https:\u002F\u002Fbadges.bar\u002Fflutter_easyloading\u002Fpub%20points)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_easyloading\u002Fscore) [![popularity](https:\u002F\u002Fbadges.bar\u002Fflutter_easyloading\u002Fpopularity)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_easyloading\u002Fscore) [![likes](https:\u002F\u002Fbadges.bar\u002Fflutter_easyloading\u002Flikes)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_easyloading\u002Fscore) [![license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fnslogx\u002Fflutter_easyloading?style=flat)](https:\u002F\u002Fgithub.com\u002Fnslogx\u002Fflutter_easyloading) [![stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fnslogx\u002Fflutter_easyloading?style=social)](https:\u002F\u002Fgithub.com\u002Fnslogx\u002Fflutter_easyloading)\n\nEnglish | [简体中文](.\u002FREADME-zh_CN.md)\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fnslogx\u002Fflutter_easyloading\u002Fmaster\u002Fimages\u002Fgif01.gif\" width=200 height=429\u002F> \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fnslogx\u002Fflutter_easyloading\u002Fmaster\u002Fimages\u002Fgif02.gif\" width=200 height=429\u002F> \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fnslogx\u002Fflutter_easyloading\u002Fmaster\u002Fimages\u002Fgif03.gif\" width=200 height=429\u002F> \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fnslogx\u002Fflutter_easyloading\u002Fmaster\u002Fimages\u002Fgif04.gif\" width=200 height=429\u002F>\n\n## Live Preview\n\n👉 [https:\u002F\u002Fnslogx.github.io\u002Fflutter_easyloading](https:\u002F\u002Fnslogx.github.io\u002Fflutter_easyloading\u002F#\u002F)\n\n## Installing\n\nAdd this to your package's `pubspec.yaml` file:\n\n```yaml\ndependencies:\n  flutter_easyloading: ^latest\n```\n\n## Import\n\n```dart\nimport 'package:flutter_easyloading\u002Fflutter_easyloading.dart';\n```\n\n## How to use\n\nFirst, initialize `EasyLoading` in your `MaterialApp`\u002F`CupertinoApp`:\n\n```dart\nclass MyApp extends StatelessWidget {\n  \u002F\u002F This widget is the root of your application.\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Flutter EasyLoading',\n      theme: ThemeData(\n        primarySwatch: Colors.blue,\n      ),\n      home: MyHomePage(title: 'Flutter EasyLoading'),\n      builder: EasyLoading.init(),\n    );\n  }\n}\n```\n\nThen, enjoy yourself:\n\n```dart\nEasyLoading.show(status: 'loading...');\n\nEasyLoading.showProgress(0.3, status: 'downloading...');\n\nEasyLoading.showSuccess('Great Success!');\n\nEasyLoading.showError('Failed with Error');\n\nEasyLoading.showInfo('Useful Information.');\n\nEasyLoading.showToast('Toast');\n\nEasyLoading.dismiss();\n```\n\nAdd loading status callback\n\n```dart\nEasyLoading.addStatusCallback((status) {\n  print('EasyLoading Status $status');\n});\n```\n\nRemove loading status callback(s)\n\n```dart\nEasyLoading.removeCallback(statusCallback);\n\nEasyLoading.removeAllCallbacks();\n```\n\n## Customize\n\n❗️**Note:**\n\n- **`textColor`、`indicatorColor`、`progressColor`、`backgroundColor` only used for `EasyLoadingStyle.custom`.**\n\n- **`maskColor` only used for `EasyLoadingMaskType.custom`.**\n\n```dart\n\u002F\u002F\u002F loading style, default [EasyLoadingStyle.dark].\nEasyLoadingStyle loadingStyle;\n\n\u002F\u002F\u002F loading indicator type, default [EasyLoadingIndicatorType.fadingCircle].\nEasyLoadingIndicatorType indicatorType;\n\n\u002F\u002F\u002F loading mask type, default [EasyLoadingMaskType.none].\nEasyLoadingMaskType maskType;\n\n\u002F\u002F\u002F toast position, default [EasyLoadingToastPosition.center].\nEasyLoadingToastPosition toastPosition;\n\n\u002F\u002F\u002F loading animationStyle, default [EasyLoadingAnimationStyle.opacity].\nEasyLoadingAnimationStyle animationStyle;\n\n\u002F\u002F\u002F loading custom animation, default null.\nEasyLoadingAnimation customAnimation;\n\n\u002F\u002F\u002F textAlign of status, default [TextAlign.center].\nTextAlign textAlign;\n\n\u002F\u002F\u002F textStyle of status, default null.\nTextStyle textStyle;\n\n\u002F\u002F\u002F content padding of loading.\nEdgeInsets contentPadding;\n\n\u002F\u002F\u002F padding of [status].\nEdgeInsets textPadding;\n\n\u002F\u002F\u002F size of indicator, default 40.0.\ndouble indicatorSize;\n\n\u002F\u002F\u002F radius of loading, default 5.0.\ndouble radius;\n\n\u002F\u002F\u002F fontSize of loading, default 15.0.\ndouble fontSize;\n\n\u002F\u002F\u002F width of progress indicator, default 2.0.\ndouble progressWidth;\n\n\u002F\u002F\u002F width of indicator, default 4.0, only used for [EasyLoadingIndicatorType.ring, EasyLoadingIndicatorType.dualRing].\ndouble lineWidth;\n\n\u002F\u002F\u002F display duration of [showSuccess] [showError] [showInfo], default 2000ms.\nDuration displayDuration;\n\n\u002F\u002F\u002F animation duration of indicator, default 200ms.\nDuration animationDuration;\n\n\u002F\u002F\u002F color of loading status, only used for [EasyLoadingStyle.custom].\nColor textColor;\n\n\u002F\u002F\u002F color of loading indicator, only used for [EasyLoadingStyle.custom].\nColor indicatorColor;\n\n\u002F\u002F\u002F progress color of loading, only used for [EasyLoadingStyle.custom].\nColor progressColor;\n\n\u002F\u002F\u002F background color of loading, only used for [EasyLoadingStyle.custom].\nColor backgroundColor;\n\n\u002F\u002F\u002F mask color of loading, only used for [EasyLoadingMaskType.custom].\nColor maskColor;\n\n\u002F\u002F\u002F should allow user interactions while loading is displayed.\nbool userInteractions;\n\n\u002F\u002F\u002F should dismiss on user tap.\nbool dismissOnTap;\n\n\u002F\u002F\u002F indicator widget of loading\nWidget indicatorWidget;\n\n\u002F\u002F\u002F success widget of loading\nWidget successWidget;\n\n\u002F\u002F\u002F error widget of loading\nWidget errorWidget;\n\n\u002F\u002F\u002F info widget of loading\nWidget infoWidget;\n```\n\nBecause of `EasyLoading` is a singleton, so you can custom loading style any where like this:\n\n```dart\nEasyLoading.instance\n  ..displayDuration = const Duration(milliseconds: 2000)\n  ..indicatorType = EasyLoadingIndicatorType.fadingCircle\n  ..loadingStyle = EasyLoadingStyle.dark\n  ..indicatorSize = 45.0\n  ..radius = 10.0\n  ..progressColor = Colors.yellow\n  ..backgroundColor = Colors.green\n  ..indicatorColor = Colors.yellow\n  ..textColor = Colors.yellow\n  ..maskColor = Colors.blue.withOpacity(0.5)\n  ..userInteractions = true\n  ..dismissOnTap = false\n  ..customAnimation = CustomAnimation();\n```\n\nMore indicatorType can see in 👉 [flutter_spinkit showcase](https:\u002F\u002Fgithub.com\u002Fjogboms\u002Fflutter_spinkit#-showcase)\n\n## Custom Animation\n\nexample: 👉 [Custom Animation](https:\u002F\u002Fgithub.com\u002Fnslogx\u002Fflutter_easyloading\u002Fblob\u002Fdevelop\u002Fexample\u002Flib\u002Fcustom_animation.dart)\n\n## Todo\n\n- [x] add progress indicator\n\n- [x] add custom animation\n\n## Changelog\n\n[CHANGELOG](.\u002FCHANGELOG.md)\n\n## License\n\n[MIT License](.\u002FLICENSE)\n\n## ❤️❤️❤️\n\nThanks to [flutter_spinkit](https:\u002F\u002Fgithub.com\u002Fjogboms\u002Fflutter_spinkit) ❤️\n\nSupported by [JetBrains Open Source](https:\u002F\u002Fwww.jetbrains.com\u002Fcommunity\u002Fopensource\u002F#support)\n\n[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fnslogx\u002Fflutter_easyloading\u002Fmaster\u002Fimages\u002Fjetbrains.png\" width=200 height=112\u002F>](https:\u002F\u002Fwww.jetbrains.com\u002F?from=FlutterEasyLoading)\n\n","Flutter EasyLoading 是一个简洁轻量的 Flutter 加载和提示组件，无需上下文即可轻松使用，并支持 iOS、Android 和 Web 平台。其核心功能包括显示加载状态、进度条、成功或错误提示以及简单的 Toast 信息展示。通过提供多种自定义选项如颜色、样式等，开发者能够根据需要调整外观以适应不同应用的设计风格。此外，它还允许添加回调函数来监听加载状态的变化。适用于任何需要在用户界面上显示加载动画或临时消息的 Flutter 应用场景中，特别是在网络请求处理期间向用户提供反馈时非常有用。",2,"2026-06-11 03:22:25","top_language"]