A curated list ๐ of awesome ๐ Flutter packages. These are some of the most valuable gems ๐ of the Flutter community.
Is your favourite ๐ package missing? Let me know or create a pull request...
Please read the contribution guidelines before opening a pull request ๐
- Widgets
- Animations
- Images
- Swipe & Slide
- Dialogs & Pickers
- Input & Forms
- Device
- Networking
- Bluetooth & Wifi
- Utils
- Frameworks & Design Patterns
- Audio & Video
- Files
- Persistance
- Logging & Error Handling
WebView for Flutter (Flutter Team) v0.3.3+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
A Flutter plugin that provides a WebView widget on Android and iOS.
On iOS the WebView widget is backed by a WKWebView
; On Android the WebView widget is backed by a WebView
.
Splash Screen v1.2.0
![](https://camo.githubusercontent.com/7d88d1a9ffb41b343d35a10596e7edd0af77f27a7e4729b545bb0ba059ae722d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4b6172696d4d6f68616d6564323030352f53706c61736853637265656e466c75747465725061636b6167652e7376673f7374796c653d736f6369616c)
Easy to use splash screen package.
auto_size_text v1.0.0
![](https://camo.githubusercontent.com/06893980ac035bd8839d70c2149218f89be46bc9cc0668371d84fc0b804a6e01/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c656973696d2f6175746f5f73697a655f746578742e7376673f7374796c653d736f6369616c)
Flutter widget that automatically resizes text to fit perfectly within its bounds.
Flutter Sticky Headers v0.1.7
![](https://camo.githubusercontent.com/d0d0d22341375f8dc2acd01a0ac87e3dc71245253ec78841fcd5391c212550d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465725f737469636b795f686561646572732e7376673f7374796c653d736f6369616c)
Lets you place headers on scrollable content that will stick to the top of the container whilst the content is scrolled.
Flutter Speed Dial v1.1.1
![](https://camo.githubusercontent.com/03936c507cc431268a0b04b29f0cf3aebca67b7123cd0c7946499fb13c5aa394/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646172696f69656c617264692f666c75747465725f73706565645f6469616c2e7376673f7374796c653d736f6369616c)
Flutter plugin to implement a beautiful and dynamic Material Design Speed Dial, with labels, animated icons and hide on scrolling.
Flutter Platform Widgets v0.9.5
![](https://camo.githubusercontent.com/852396413cc7bb984fa8753cd47bf97b0876fba6bc74902a9dd22c1d8c376c04/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6171776572742f666c75747465725f706c6174666f726d5f776964676574732e7376673f7374796c653d736f6369616c)
Simplifying the use of both Material and Cupertino widgets with a single widget.
PlatformWidget(
ios: (_) => Icon(CupertinoIcons.flag),
android: (_) => Icon(Icons.flag),
);
PlatformButton(
onPressed: () => print('send'),
child: PlatformText('Send'),
);
PlatformAlertDialog(
title: Text('Alert'),
content: Text('Some content'),
actions: <Widget>[
PlatformDialogAction(),
PlatformDialogAction(),
],
);
etc.
flutter_staggered_grid_view v0.2.7
![](https://camo.githubusercontent.com/7704d01d4fd1d200afe03aa406b368ed3d72f6bf28db2ee8a0e41eb7e18bd2c7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c65747361722f666c75747465725f7374616767657265645f677269645f766965772e7376673f7374796c653d736f6369616c)
A Flutter staggered grid view which supports multiple columns with rows of varying sizes.
FancyBottomNavigation v0.3.2
![](https://camo.githubusercontent.com/9fe971bc630655d641bb9dc40af8382b26d408184814ef3d39c09b1cebd13e3c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74756e69746f77656e2f66616e63795f626f74746f6d5f6e617669676174696f6e2e7376673f7374796c653d736f6369616c)
An animated Bottom Navigation Bar for Flutter apps, icon animates into place, colors are customisable.
Liquid Pull To Refresh v1.1.0
![](https://camo.githubusercontent.com/2d55ae0cf306ab509ab977817482498dab2f5a20ba125986fd17830a299aa2fd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616167617277616c313031322f4c69717569642d50756c6c2d546f2d526566726573682e7376673f7374796c653d736f6369616c)
A beautiful and custom refresh indicator with some cool animations and transitions for flutter.
folding_cell v0.1.1
![](https://camo.githubusercontent.com/0a6a71e149fbc046880c26181b9a1648142fa188c22fc89710ea0bc39ed7675c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f66616f622d6465762f666f6c64696e675f63656c6c2e7376673f7374796c653d736f6369616c)
Simple folding cell widget implemented in Flutter. Its a widget so add it to any container widget as a child.
snaplist v0.1.7
![](https://camo.githubusercontent.com/1f17932de9627b1432feed8798c501aa73abdb9129dbff1c0042c945fb394d76/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f61726965646f762f666c75747465725f736e61706c6973742e7376673f7374796c653d736f6369616c)
Small cozy library that allows you to make snappable list views.
Infinite ListView v1.0.0
![](https://camo.githubusercontent.com/668886fd73e62f4b271605750967762f6fbf8550a57d8263ce24018bfbb7a03f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465725f696e66696e6974655f6c697374766965772e7376673f7374796c653d736f6369616c)
ListView with items that can be scrolled infinitely in both directions.
flutter_tags v0.2.0
![](https://camo.githubusercontent.com/522a7c588de01448815072160845dd70e0da3f73d02a0da182fe15dd0e877d58/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f446e2d612f666c75747465725f746167732e7376673f7374796c653d736f6369616c)
Flutter tags let you create a list of tags or insert them dynamically with the input.
Draggable Scrollbar v0.0.4
![](https://camo.githubusercontent.com/e0dc0299619cd3da8dc8f7207b7869b46c53dc969be11990d83b84ab1b509fad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465722d647261676761626c652d7363726f6c6c6261722e7376673f7374796c653d736f6369616c)
A scrollbar that can be dragged for quickly navigating through a vertical list. Additionally it can show a label next to the scrollthumb with information about the current item.
Fluid Slider v0.0.1
![](https://camo.githubusercontent.com/3f1a2e5fcbdc5fc11039893aabcc4ab59ee53ec64c94666c1a2b0d97c6fd23ad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7276616d73696b726973686e612f666c75747465725f666c7569645f736c696465722e6769742e7376673f7374796c653d736f6369616c)
A fluid design slider that works just like the Slider material widget.
BubbleBottomBar v1.0.0
![](https://camo.githubusercontent.com/dc73a6f1ff1c273c2b9c4a75060a7d48c2e9e5d1554e88c35bac844236ccfaca/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7765737464616265737464622f627562626c655f626f74746f6d5f6261722e7376673f7374796c653d736f6369616c)
BubbleBottomBar is a Flutter widget designed by cubertodesign and developed by westdabestdb.
Zefyr v0.4.0
![](https://camo.githubusercontent.com/8e487ade975003bcfac822dd40a1171eca06cfa840a7b7691fc8169c8df01417/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d656d73706163652f7a656679722e7376673f7374796c653d736f6369616c)
Clean, minimalistic and collaboration-ready rich text editor for Flutter.
Passcode Lock Screen v1.0.0+2
![](https://camo.githubusercontent.com/b65e03b98615f122eba348acd05dd50c4ffeda053a055a4131f084132ffda2c9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f785075746e696b782f666c75747465722d70617373636f64652e7376673f7374796c653d736f6369616c)
A platform agnostic Flutter package for showing passcode input screen, similar to Native iOS. Screen customizable with a colors, sizes, fonts etc.
ProgressButton v0.0.1
![](https://camo.githubusercontent.com/3a494c63823fcf6118e37b8a793af45c6c532a78792ec16f89db41414eb1d6c3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f68616c696c6f7a657263616e2f70726f6772657373627574746f6e2e7376673f7374796c653d736f6369616c)
A Material Flutter Button that supports progress and error visuals.
stepper_touch v0.0.1
![](https://camo.githubusercontent.com/e9e795477209578464d6fcbca61d15ed1e309eb6d1212d91396c51313dba49b8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f526168696368652f737465707065725f746f7563682e7376673f7374796c653d736f6369616c)
A Flutter stepper widget with nice aniamtion.
โจFlutter Spinkit v3.1.0
![](https://camo.githubusercontent.com/6ce45b386c9497d9720f4e406d33542e1c06402f56afb959e50ab4eebd81d2bf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a6f67626f6d732f666c75747465725f7370696e6b69742e7376673f7374796c653d736f6369616c)
A collection of loading indicators animated with flutter.
Shimmer v1.0.0
![](https://camo.githubusercontent.com/13361a44452f59bb7fd99875ba45e19c7c35500d5982c9b1647ba52a4c62ebd7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f686e766e2f666c75747465725f7368696d6d65722e7376673f7374796c653d736f6369616c)
A package provides an easy way to add shimmer effect in Flutter project.
Animated Text Kit v1.3.0
![](https://camo.githubusercontent.com/095052a5f7a2160fedeb79738376a3d2a0aef705e0d8dc5336de6b6f0c68ce5d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616167617277616c313031322f416e696d617465642d546578742d4b69742e7376673f7374796c653d736f6369616c)
A flutter package project which contains a collection of cool and beautiful text animations.
spritewidget v0.9.18
![](https://camo.githubusercontent.com/934df8fe0cb8c60e0acce7457773db5ac3885f6339ec7288997a994a7d6fc702/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7370726974657769646765742f7370726974657769646765742e7376673f7374796c653d736f6369616c)
SpriteWidget is a toolkit for building complex, high performance animations and 2D games with Flutter. Your sprite render tree lives inside a widget that mixes seamlessly with other Flutter and Material widgets. You can use SpriteWidget to create anything from an animated icon to a full fledged game.
flutter_sequence_animation v3.0.1
![](https://camo.githubusercontent.com/e2a4c1f008855b150a4fd0111ef15d351350d00d98a3ebd32a399a180592d639/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4e6f72626572743531352f666c75747465725f73657175656e63655f616e696d6174696f6e2e7376673f7374796c653d736f6369616c)
Composite together any animation with this robust and simple to use package.
flutter_villains v1.2.0
![](https://camo.githubusercontent.com/f695849bd0a3e94bfdc078a564cf07c1ee2340bd8f3efc6c30480a3d5691a849/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4e6f72626572743531352f666c75747465725f76696c6c61696e732e7376673f7374796c653d736f6369616c)
Page transitions with just a few lines of code. What are heroes without villains?
Flutter Page Transition Package v1.0.8
![](https://camo.githubusercontent.com/bade1f34c2337e5a988f0a869ded90cb13b6c4823c1a3b2d05fb504d956f1b89/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6b616c69736d6572617336312f666c75747465725f706167655f7472616e736974696f6e2e7376673f7374796c653d736f6369616c)
This package gives you beautiful page transitions.
Wave v0.0.8
![](https://camo.githubusercontent.com/32702e137712113ad8ef986fa01f681bb18d97905fc872d1eb2c66bc570a0938/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f54686550726f746f73732f776176652e7376673f7374796c653d736f6369616c)
Widget for displaying waves with custom color, duration, floating and blur effects.
flip_card v0.2.1
![](https://camo.githubusercontent.com/2c418e1d0181c9822bfc8aa5b25bcdf8d7ce344d06fd69402c98102c386937d1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666564656f6f2f666c69705f636172642e7376673f7374796c653d736f6369616c)
A component that provides flip card animation. It could be used for hide and show details of a product.
fluttie: Lottie for flutter v0.3.1
![](https://camo.githubusercontent.com/aa5e24ad3f1b1dc63e04e28fa187b8574eb3b981834b67fa3a12f6ff46c11f5c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f73696d6f6c7573332f666c75747469652e7376673f7374796c653d736f6369616c)
Fluttie allows you to easily display stunning Lottie animations in flutter.
Hidden Drawer Menu v0.5.0
![](https://camo.githubusercontent.com/2f9c4fd0a81febd32eb14709d458c38f40bbf90bf5c4883528590160f31cd1a8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f52616661656c426172626f73617465632f68696464656e5f6472617765725f6d656e752e7376673f7374796c653d736f6369616c)
Hidden Drawer Menu is a library for adding a beautiful drawer mode menu feature with perspective animation.
flip_panel v1.0.0
![](https://camo.githubusercontent.com/98de42e16716c6f2f64e8eed424ddba3f2c753fd2bb35d26683ada8ffbca8d36/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f686e766e2f666c75747465725f666c69705f70616e656c2e7376673f7374796c653d736f6369616c)
A package for flip panel with built-in animation.
flame v0.10.2
![](https://camo.githubusercontent.com/33cba314d24f71bcfc74b0abd811fb177daeb20bb421bf4c94ce747236e0faa0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c75616e706f747465722f666c616d652e7376673f7374796c653d736f6369616c)
A minimalist Flutter game engine, provides a nice set of somewhat independent modules you can choose from.
import 'package:flame/components/component.dart';
Sprite sprite = new Sprite('player.png');
const size = 128.0;
final player = new SpriteComponent.fromSprite(size, size, sprite); // width, height, sprite
player.x = ... // 0 by default
player.y = ... // 0 by default
player.angle = ... // 0 by default
// on your render method...
player.render(canvas);
WaveProgress v0.0.1
![](https://camo.githubusercontent.com/30101bafdea60989a99eb578ebc85cd58ca95e87b6e9f10a9d6f8733b0162af3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f73747564696f6964616e2f776176655f70726f67726573732e7376673f7374796c653d736f6369616c)
A custom wave progress widget.
Text to Path Maker v0.5.7
![](https://camo.githubusercontent.com/c58a503e56051e0b866087cfa710366e3e7c7479f33aef45064ccd7111cdaf2e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f686174686962656c6167616c2d6465762f746578742d746f2d706174682d6d616b65722d666f722d666c75747465722e7376673f7374796c653d736f6369616c)
Tis is a pure Flutter and Dart package that allows you to convert text (both characters and icons) into paths and animate them.
drawing_animation v0.0.4
![](https://camo.githubusercontent.com/db2f678db2cd0333a85b91429b4a46342bcc0e1c2f3cefefb2e0d076d9227e16/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f62696f6361726c2f64726177696e675f616e696d6174696f6e2e7376673f7374796c653d736f6369616c)
An dart-only library for gradually painting SVG path objects on canvas (drawing line animation).
Path Morph v1.0.1
![](https://camo.githubusercontent.com/5998b306ede30becb021d635df92a3daa4ea6bbebbc64da96f745db487ec8912/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f686174686962656c6167616c2d6465762f706174685f6d6f7270685f666f725f666c75747465722e7376673f7374796c653d736f6369616c)
This package lets you create path tween animations. In other words, it lets you morph one path into another.
Image Picker (Flutter Team) v0.5.0+3
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
A Flutter plugin for iOS and Android for picking images from the image library, and taking new pictures with the camera.
flutter_svg v0.10.4
![](https://camo.githubusercontent.com/2e295c6f4dc634c497c3150ccb9929df945350016906aa8999bebfd2322f45f0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646e6669656c642f666c75747465725f7376672e7376673f7374796c653d736f6369616c)
An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files.
final String assetName = 'assets/image.svg';
final Widget svg = new SvgPicture.asset(
assetName,
semanticsLabel: 'Acme Logo'
);
Flutter Photo View v0.2.1
![](https://camo.githubusercontent.com/8b8ddb02f9946367c12e4ec695369dfbd145125ba261bdc5d8ba96735dbadd18/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f72656e616e63617261756a6f2f70686f746f5f766965772e7376673f7374796c653d736f6369616c)
A simple zoomable image widget for Flutter.
Resolves a image provider and shows the result with useful gestures support, such as pinch to zoom and pan.
Image Cropper v1.0.0
![](https://camo.githubusercontent.com/40af9e1d9ba55c4e00c92ac9837633091fb1ec939297d9bd9a29210c62afebfc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f686e766e2f666c75747465725f696d6167655f63726f707065722e7376673f7374796c653d736f6369616c)
A Flutter plugin for Android and iOS supports cropping images.
Flutter Advanced Network Image v0.4.11
![](https://camo.githubusercontent.com/de0a85188f7b04e99feb29dcbe8c323e972bb6817492340835362a3ab3cbd928/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d63686f6d652f666c75747465725f616476616e6365645f6e6574776f726b696d6167652e7376673f7374796c653d736f6369616c)
An advanced image provider provides caching and retrying for flutter app. Now with zoomable widget and transition to image widget
Image(
image: AdvancedNetworkImage(
url,
header: header,
useDiskCache: true,
cacheRule: CacheRule(maxAge: const Duration(days: 7)),
),
fit: BoxFit.cover,
)
CachedNetworkImage v0.6.1
![](https://camo.githubusercontent.com/97419bd5615a4f6f05149aee54de71daf1946e794f1af5e37df6d2deb1fa305a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f72656e65666c6f6f722f666c75747465725f6361636865645f6e6574776f726b5f696d6167652e7376673f7374796c653d736f6369616c)
A flutter library to show images from the internet and keep them in the cache directory.
CachedNetworkImage(
imageUrl: "http://via.placeholder.com/350x150",
placeholder: (context, url) => CircularProgressIndicator(),
errorWidget: (context, url, error) => Icon(Icons.error),
)
Flutter Multi Image Picker v3.0.14
![](https://camo.githubusercontent.com/3b4328e5634add3efd570eb119891a2a849e43dbe5d40415fb349ef238f0b2a1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f5368316430772f6d756c74695f696d6167655f7069636b65722e7376673f7374796c653d736f6369616c)
Flutter plugin that allows you to display multi image picker on iOS and Android.
flutter_image_compress v0.2.4
![](https://camo.githubusercontent.com/524e7545ffd8d586b8aade2de79e94b1a92f573ba9915a27afd0a7dea0e67f6f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4f70656e466c75747465722f666c75747465725f696d6167655f636f6d70726573732e7376673f7374796c653d736f6369616c)
Compress images with native code (objc kotlin), it's faster. This package supports Android and iOS.
var result = await FlutterImageCompress.compressWithFile(
file.absolute.path,
minWidth: 2300,
minHeight: 1500,
quality: 94,
rotate: 90,
);
Material Design Icons v3.1.3493
![](https://camo.githubusercontent.com/c36e8e1a214e415b10e16ec3202a1c609f010a99ce796ad82345adca52f7ab0a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7a696f6661742f6d6174657269616c5f64657369676e5f69636f6e735f666c75747465722e7376673f7374796c653d736f6369616c)
The Material Design Icons from the community for Flutter.
Image Cropping plugin v0.2.0
![](https://camo.githubusercontent.com/2b638f5c8c0c56a3ab815baf677a2821c98d0b2c7911f0dc15bc2d30d2f65abf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f566f6c6f64796d79724c796b686f6e69732f696d6167655f63726f702e7376673f7374796c653d736f6369616c)
image v2.0.7
![](https://camo.githubusercontent.com/38d4a79cbb00a1d411525bcef99f738e615a3d7d7cdf9beb01765c883117c429/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6272656e64616e2d64756e63616e2f696d6167652e7376673f7374796c653d736f6369616c)
Provides server and web apps the ability to load, manipulate, and save images with various image file formats including PNG, JPEG, GIF, WebP, TIFF, TGA, PSD, PVR, and OpenEXR.
Image image = decodeImage(Io.File('test.webp').readAsBytesSync());
// Resize the image to a 120x? thumbnail (maintaining the aspect ratio).
Image thumbnail = copyResize(image, 120);
// Save the thumbnail as a PNG.
Io.File('thumbnail.png')
..writeAsBytesSync(encodePng(thumbnail));
flutter_swiper v1.1.4
![](https://camo.githubusercontent.com/79b1d5b8774a89c4415ba028033af946d8b2abbbb83d82fb0e990fa4a1003716/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a7a6f6f6d2f666c75747465725f7377697065722e7376673f7374796c653d736f6369616c)
The best swiper for flutter, with multiple layouts, infinite loop. Compatible with Android & iOS.
flutter_slidable v0.4.9
![](https://camo.githubusercontent.com/a29b2c0acf5e52c8b99ab4d2bdfe63445b535f780f55659ab6eefc0ec3a953cd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c65747361722f666c75747465725f736c696461626c652e7376673f7374796c653d736f6369616c)
A Flutter implementation of slidable list item with directional slide actions that can be dismissed.
intro_views_flutter v2.4.0
![](https://camo.githubusercontent.com/ba6b1023ea9d097f254e1fef9b2ab3290e5d006010dfbcebf44ce51bddb52249/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616167617277616c313031322f496e74726f56696577732d466c75747465722e7376673f7374796c653d736f6369616c)
A Flutter package for simple material design app intro screens with some cool animations.
carousel_slider v1.1.0
![](https://camo.githubusercontent.com/b9a6df9d23ebdefa1c4afa46417d333c0ce413b9365f991de0c54e48c9afcfe5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f736572656e61646572323031342f666c75747465725f6361726f7573656c5f736c696465722e7376673f7374796c653d736f6369616c)
A carousel slider widget, support infinite scroll and custom child widget, with auto play feature.
intro_slider v1.1.5
![](https://camo.githubusercontent.com/0df9d90fc89203dc3d67ef880949d7b066c76a452ce81463a4122b65b444f5b6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f647579747139342f666c75747465722d696e74726f2d736c696465722e7376673f7374796c653d736f6369616c)
A plugin to help you make intro slider screen to show the major features of your app. You can change the image, button, text style, color, and more things.
Flushbar v1.2.3
![](https://camo.githubusercontent.com/ea4fc32411b83a47cb82ff332b2e8cde6e080590103eed5935ad35fab2ad7b77/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f416e647265486175656973656e2f666c7573686261722e7376673f7374796c653d736f6369616c)
A flexible widget for user notification. Customize your text, button, duration, animations and much more. For Android devs, it is made to replace Snackbars and Toasts.
smooth_star_rating v1.0.1
![](https://camo.githubusercontent.com/4d2a0bb9d5a5bab077e161c8c0dd7adca7b83d38ea54b01108935bdab3588ab4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7468616e676d616d2f736d6f6f7468726174696e676261722e6769742e7376673f7374796c653d736f6369616c)
A Star rating with touch and swipe rate enabled
- Supports half rate and full rate (1.0 or 0.5)
- Swipe for incrementing/decrementing rate amount
- Change star body and boundary colors independently
Rubber v0.2.6
![](https://camo.githubusercontent.com/a4cf84b1f20cca044e1e35cf77bcf26aa8c764668288affae8b70b37bc71b116/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d63726f7665726f2f7275626265722e7376673f7374796c653d736f6369616c)
Rubber is an elastic bottom sheet widget with the customizable material spring animation.
modal_progress_hud v0.1.2
![](https://camo.githubusercontent.com/fb8d3c052e6212d9fe4b17d435eca44430359d42efe16777fdb5f13751011421/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6d63633030372f6d6f64616c5f70726f67726573735f6875642e7376673f7374796c653d736f6369616c)
A modal progress indicator widget (HUD = heads-up display). Wrap around another widget to block access to widget during an async call. Also accepts a custom spinner.
file_picker v1.2.0
![](https://camo.githubusercontent.com/869080b9e3b9bd7df59d2807b06d01541da137c0b2decbe7e47ec861d32e1499/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d696775656c70727569766f2f706c7567696e735f666c75747465725f66696c655f7069636b65722e7376673f7374796c653d736f6369616c)
A plugin that allows you to pick absolute paths from different file types.
NumberPicker v1.0.0
![](https://camo.githubusercontent.com/5cc73398d563c7f5786c4ba2e70be4fcc48754910c214b637348c415ace6f327/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4d617263696e7573582f4e756d6265725069636b65722e7376673f7374796c653d736f6369616c)
NumberPicker
is a custom widget designed for choosing an integer or decimal number by scrolling spinners.
It is possible to use NumberPicker
as a standalone widget as well as in NumberPickerDialog
.
country_pickers v1.0.1
![](https://camo.githubusercontent.com/646d4c7052e3252d3ebc6cb7586f9f5002e2b2885ed819856553c99271efb1c4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666967656e67756e676f722f636f756e7472795f7069636b6572732e7376673f7374796c653d736f6369616c)
Countries, codes, flags and several ways of picking them at your service...
Date Range Picker v1.0.5
![](https://camo.githubusercontent.com/3d582441d5590b2742a4fd9985ab38aac1e89d68dcd298f54f2a5c6deead8f2d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616e696364682f646174655f72616e67655f7069636b65722e7376673f7374796c653d736f6369616c)
Date Range Pickers use a dialog window to select a range of date on mobile.
progress_dialog v1.0.3
![](https://camo.githubusercontent.com/77cb875ed957bdab4d880329e8caa789106baf8c64192a0bc98463c1a33f9b1e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666179617a30372f70726f67726573735f6469616c6f672e7376673f7374796c653d736f6369616c)
A light weight library to easily manage a progress dialog with simple steps whenever you need to do it. You can easily show and hide it.
Flutter TypeAhead v1.0.5
![](https://camo.githubusercontent.com/11412e986c292a549c7d472040fe527aba859dd251f33021f4f2ecd79d753d26/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f416264756c5261686d616e416c48616d616c692f666c75747465725f7479706561686561642e7376673f7374796c653d736f6369616c)
A highly customizable typeahead (autocomplete) text input field.
Email validator v1.0.0
![](https://camo.githubusercontent.com/268762507df6a2b06a64ea10a47237236319e766d493360208f0183771eea258/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6672656465696c2f656d61696c2d76616c696461746f722e646172742e7376673f7374796c653d736f6369616c)
A simple (but correct) dart class for validating email addresses.
var email = "[email protected]";
assert(EmailValidator.validate(email) == true);
stripe_payment v0.1.0
![](https://camo.githubusercontent.com/c34f95210489ec8d3497514a48e88b9ddebf66db7dc8fbbd9ecc5d958d04a619/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a6f6e61736261726b2f666c75747465725f7374726970655f7061796d656e742e7376673f7374796c653d736f6369616c)
A flutter plugin to integrate the stripe plugin for iOS and Android. Currently only adding a credit card as source is implemented.
flutter_form_builder v1.4.0
![](https://camo.githubusercontent.com/d34eee677924f7196037a5060334d84b3ca2b7908246fa7bb5bcc5f719ba03bf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f64616e7669636b2f666c75747465725f666f726d5f6275696c6465722e7376673f7374796c653d736f6369616c)
Package to build Material Form with components such as TextField (With number, url, email validation), DropDown, TypeAhead, Radios, Checkboxes
FormBuilder(
context,
autovalidate: true,
controls: [
FormBuilderInput.textField(
type: FormBuilderInput.TYPE_TEXT,
attribute: "name",
label: "Name",
require: true,
min: 3,
),
FormBuilderInput.password(
attribute: "password",
label: "Password",
//require: true,
),
],
onChanged: () {
print("Form Changed");
},
onSubmit: (formValue) {
if (formValue != null) {
print(formValue);
} else {
print("Form invalid");
}
},
),
device_info (Flutter Team) v0.4.0+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
import 'package:device_info/device_info.dart';
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
print('Running on ${androidInfo.model}'); // e.g. "Moto G (4)"
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
print('Running on ${iosInfo.utsname.machine}'); // e.g. "iPod7,1"
share (Flutter Team) v0.6.0+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin for sharing content via the platform share UI, using the ACTION_SEND intent on Android and UIActivityViewController on iOS.
import 'package:share/share.dart';
Share.share('check out my website https://example.com');
package_info (Flutter Team) v0.4.0+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
import 'package:package_info/package_info.dart';
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
Flutter Geolocator v3.0.0
![](https://camo.githubusercontent.com/9e9d326b2729fd2cc810285f947dfcf85fff574cd2c07d03a461bc7b5231a8f5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f62617365666c6f7769742f666c75747465722d67656f6c6f6361746f722e7376673f7374796c653d736f6369616c)
Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.) functions.
import 'package:geolocator/geolocator.dart';
Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
contacts_service v0.2.1
![](https://camo.githubusercontent.com/162bce3cd1ad9d87fc40b9e910bc8ac35ffb64bca08733f8d5be7af86fc59701/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465725f636f6e74616374732e7376673f7374796c653d736f6369616c)
A Flutter plugin to retrieve and manage contacts on Android and iOS devices.
import 'package:contacts_service/contacts_service.dart';
// Get all contacts
Iterable<Contact> contacts = await ContactsService.getContacts();
// Get contacts matching a string
Iterable<Contact> johns = await ContactsService.getContacts(query : "john");
await ContactsService.addContact(newContact);
await ContactsService.deleteContact(contact);
Screen v0.0.4
![](https://camo.githubusercontent.com/5fa066b777437590da5d55450eedffc54a6a801f7919d4052f82dc304bbf8dd2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f636c6f7669736e69636f6c61732f666c75747465725f73637265656e2e7376673f7374796c653d736f6369616c)
A Flutter plugin to manage the device's screen on Android and iOS.
import 'package:screen/screen.dart';
// Get the current brightness:
double brightness = await Screen.brightness;
// Set the brightness:
Screen.setBrightness(0.5);
// Check if the screen is kept on:
bool isKeptOn = await Screen.isKeptOn;
// Prevent screen from going into sleep mode:
Screen.keepOn(true);
battery v0.3.0+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin for accessing information about the battery state (full, charging, discharging) on Android and iOS.
import 'package:battery/battery.dart';
var battery = Battery();
print(battery.batteryLevel); // Access current battery level
// Be informed when the state (full, charging, discharging) changes
_battery.onBatteryStateChanged.listen((BatteryState state) {
// Do something with new state
});
url_launcher (Flutter Team) v5.0.1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin for launching a URL on Android and iOS. Supports web, phone, SMS, and email schemes.
import 'package:url_launcher/url_launcher.dart';
const url = 'https://flutter.io';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
dio v2.0.14
![](https://camo.githubusercontent.com/7d363ea109131bdfaa4fe7b8f26e36f11608b9047b8a10f3b7c5ef7e0d406be0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465726368696e612f64696f2e7376673f7374796c653d736f6369616c)
A powerful Http client for Dart, which supports Interceptors, FormData, Request Cancellation, File Downloading, Timeout etc.
import 'package:dio/dio.dart';
void getHttp() async {
try {
Response response = await Dio().get("http://www.google.com");
return print(response);
} catch (e) {
return print(e);
}
}
http (Flutter Team) v0.12.0+1
![](https://camo.githubusercontent.com/919ce431da9b494a43b849ca55773abc13fc9fffedc67042e8680685a5020705/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646172742d6c616e672f687474702e7376673f7374796c653d736f6369616c)
A composable, cross-platform, Future-based API for making HTTP requests.
import 'package:http/http.dart' as http;
http.read("http://example.com/foobar.txt").then(print);
Flutter Downloader v1.1.6
![](https://camo.githubusercontent.com/4d0003ca3d1f16182e5ffea216ac8dc46d4f373812f4e6e02320692fbbcf8751/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465725f646f776e6c6f616465722e7376673f7374796c653d736f6369616c)
A plugin for creating and managing download tasks. Supports iOS and Android.
This plugin is based on WorkManager
in Android and NSURLSessionDownloadTask
in iOS to run download task in background mode.
final taskId = await FlutterDownloader.enqueue(
url: 'your download link',
savedDir: 'the path of directory where you want to save downloaded files',
showNotification: true, // show download progress in status bar (for Android)
openFileFromNotification: true, // click on notification to open downloaded file (for Android)
);
FlutterDownloader.registerCallback((id, status, progress) {
// code to update your UI
});
connectivity (Flutter Team) v0.4.2
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
This plugin allows Flutter apps to discover network connectivity and configure themselves accordingly. It can distinguish between cellular vs WiFi connection. This plugin works for iOS and Android.
import 'package:connectivity/connectivity.dart';
var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
// I am connected to a mobile network.
} else if (connectivityResult == ConnectivityResult.wifi) {
// I am connected to a wifi network.
}
flutter_offline v0.2.4+1
![](https://camo.githubusercontent.com/d2f8da950685ace35b7afaebbb28609035d6f08d64cfe2a4da10dade2fedb18d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a6f67626f6d732f666c75747465725f6f66666c696e652e7376673f7374796c653d736f6369616c)
A tidy utility to handle offline/online connectivity like a Boss. It provides support for both iOS and Android platforms.
OfflineBuilder(
connectivityBuilder: (
BuildContext context,
ConnectivityResult connectivity,
Widget child,
) {
final bool connected = connectivity != ConnectivityResult.none;
return Text(connected ? "online" : "offline");
},
);
FlutterBlue v0.5.0
![](https://camo.githubusercontent.com/731726df9a833050b563ca3600ff453955176020a529700c52515792b4bf76ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7061756c64656d6172636f2f666c75747465725f626c75652e7376673f7374796c653d736f6369616c)
Popular Bluetooth plugin for Flutter
FlutterBlue aims to offer the most from both platforms (iOS and Android).
Using the FlutterBlue
instance, you can scan for and connect to nearby devices. Once connected to a device, the BluetoothDevice
object can discover services, characteristics, and descriptors. The BluetoothDevice
object is then used to directly interact with characteristics and descriptors.
Flutter NFC Reader v0.0.23
![](https://camo.githubusercontent.com/f1881d6b233b089b956adb0192487c25f2e8b04c6a1cfb23a882a2b0de659b3f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d617474656f6372697070612f666c75747465722d6e66632d7265616465722e7376673f7374796c653d736f6369616c)
A new flutter plugin to help developers looking to use internal hardware inside iOS or Android devices for reading NFC tags.
The system activate a pooling reading session that stops automatically once a tag has been recognised. You can also trigger the stop event manually using a dedicated function.
Future<NfcData> startNFC() async {
NfcData response;
try {
response = await FlutterNfcReader.read;
} on PlatformException {
//Something went wrong
}
return response;
}
RxDart v0.21.0
![](https://camo.githubusercontent.com/46f249fe64ee041cc2336e750e95cc5d5dc908ac4402811b18d1c49bbdcc469d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f5265616374697665582f7278646172742e7376673f7374796c653d736f6369616c)
#Reading the Konami Code
const konamiKeyCodes = const <int>[
KeyCode.UP, KeyCode.UP,
KeyCode.DOWN, KeyCode.DOWN,
KeyCode.LEFT, KeyCode.RIGHT,
KeyCode.LEFT, KeyCode.RIGHT,
KeyCode.B, KeyCode.A
];
final result = querySelector('#result');
final keyUp = new Observable<KeyboardEvent>(document.onKeyUp);
keyUp
.map((event) => event.keyCode)
.bufferCount(10, 1)
.where((lastTenKeyCodes) => const IterableEquality<int>().equals(lastTenKeyCodes, konamiKeyCodes))
.listen((_) => result.innerHtml = 'KONAMI!');
fluro v1.4.0
![](https://camo.githubusercontent.com/be580201c4c371f8ffd7e4229a18e2dd76897e634d075f1c520412439442424d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74686579616b6b612f666c75726f2e7376673f7374796c653d736f6369616c)
Fluro is a Flutter routing library that adds flexible routing options like wildcards, named parameters and clear route definitions.
var usersHandler = Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
return UsersScreen(params["id"][0]);
});
final router = Router();
router.define("/users/:id", handler: usersHandler);
after_layout v1.0.7
![](https://camo.githubusercontent.com/c126abb4bb65444fecf07da3de4b11cc215d56257c9c176a7d4fc221ca4bb7c6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c7574746572636f6d6d756e6974792f666c75747465725f61667465725f6c61796f75742e7376673f7374796c653d736f6369616c)
Brings functionality to execute code after the first layout of a widget has been performed, i.e. after the first frame has been displayed.
class HomeScreen extends StatefulWidget {
@override
HomeScreenState createState() => new HomeScreenState();
}
class HomeScreenState extends State<HomeScreen> with AfterLayoutMixin<HomeScreen> {
@override
Widget build(BuildContext context) {
return new Scaffold(body: new Container(color: Colors.red));
}
@override
void afterFirstLayout(BuildContext context) {
showDialog(
context: context,
builder: (context) => AlertDialog(
content: Text('Hello World'),
),
);
}
}
json_serialize (Flutter Team) v2.0.2
![](https://camo.githubusercontent.com/884fea60aab88467b731df5cb6f93029dd1eea442a0b4b1824d182d4dd0154f7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646172742d6c616e672f6a736f6e5f73657269616c697a61626c652e7376673f7374796c653d736f6369616c)
Generates utilities to aid in serializing to/from JSON.
import 'package:json_annotation/json_annotation.dart';
part 'example.g.dart';
@JsonSerializable(nullable: false)
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth;
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
fluwx WeChatSDK v0.6.0
![](https://camo.githubusercontent.com/90e3c47ed9786bdf530b3fe5536233dd8f54e5b7b02e2b6e0b56c53f088aa617/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4a617276616e4d6f2f666c7577782e7376673f7374796c653d736f6369616c)
A implement of WeChatSDK on Flutter. Enjoy sharing or payments in Flutter.
import 'package:fluwx/fluwx.dart' as fluwx;
fluwx.register(appId:"wxd930ea5d5a258f4f");
fluwx.share(
WeChatShareTextModel(
text: "text from fluwx",
transaction: "transaction",
scene: WeChatScene.SESSION,
),
);
tuple v1.0.2
![](https://camo.githubusercontent.com/40ed76d1202dc137027b415f76875799db39ee30ee6ae2a7e5be89d6e311e1dd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646172742d6c616e672f7475706c652e7376673f7374796c653d736f6369616c)
Tuple data structure.
var t = const Tuple2<String, int>('a', 10);
print(t.item1); // prints 'a'
print(t.item2); // prints '10'
superpower v0.4.0
![](https://camo.githubusercontent.com/150a96c8edc725be24e04d4a96c42b7c09ae9b047eb6f26faa2814ee8d2a8e3c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c656973696d2f7375706572706f7765722e7376673f7374796c653d736f6369616c)
Lists, Iterables and Maps on steroids! ๐ฆ Extends Lists with negative indices, sort, group, distinct, slice, flatten etc. Inspired by Kotlin.
Just wrap your existing List with
var superList = $([0, 10, 100, 1000]);
var sum = superList.sum(); // 1110
var last = superList[-1]; // 1000
var lastTwo = superList.slice(-2); // [100, 1000]
rosetta v0.1.2
![](https://camo.githubusercontent.com/1fb6afbe11268c356c337677293cd3a74effff71f2ec680188e4497a8a6141f6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f5465616d57616e6172692f726f73657474612e7376673f7374796c653d736f6369616c)
This is a localization library to simplify Flutter localization with the help of code generation.
i18n/en.json
{
"hello_there": "Hello there!",
"see_you_soon": "See you soon!"
}
part 'translation.g.dart';
@Stone(path: 'i18n')
class Translation with _$TranslationHelper {
static LocalizationsDelegate<Translation> delegate = _$TranslationDelegate();
static Translation of(BuildContext context) {
return Localizations.of(context, Translation);
}
}
scoped_model v1.0.1
![](https://camo.githubusercontent.com/af2dd1a120d3c89d6499f86d1d2ddade90f157c1bc62a49a44c099c0468510aa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f627269616e6567616e2f73636f7065645f6d6f64656c2e7376673f7374796c653d736f6369616c)
A Widget that passes a Reactive Model to all of it's children.
A set of utilities that allow you to easily pass a data Model from a parent Widget down to it's descendants. In addition, it also rebuilds all of the children that use the model when the model is updated. This library was originally extracted from the Fuchsia codebase.
class CounterModel extends Model {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++; // First, increment the counter
notifyListeners(); // Then notify all the listeners.
}
}
class CounterApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Create a `ScopedModel` widget. This will provide the `model` to the children that request it.
return ScopedModel<CounterModel>(
model: CounterModel(),
child: Column(children: [
// Create a ScopedModelDescendant. This widget will get the CounterModel from the nearest
// ScopedModel<CounterModel>. It will rebuild any time the CounterModel changes
ScopedModelDescendant<CounterModel>(
builder: (context, child, model) => Text('${model.counter}'),
),
Text("Another widget that doesn't depend on the CounterModel")
]),
);
}
}
flutter_redux v0.5.3
![](https://camo.githubusercontent.com/46ce10bea4f8f8844f47b819055acc8bf128988bbceb5866e554b6f4bad15299/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f627269616e6567616e2f666c75747465725f72656475782e7376673f7374796c653d736f6369616c)
A set of utilities that allow you to easily consume a Redux Store to build Flutter Widgets.
#Redux Widgets
StoreProvider
- The base Widget. It will pass the given Redux Store to all descendants that request it.StoreBuilder
- A descendant Widget that gets the Store from a StoreProvider and passes it to a Widget builder function.StoreConnector
- A descendant Widget that gets the Store from the nearest StoreProvider ancestor, converts the Store into a ViewModel with the given converter function, and passes the ViewModel to a builder function. Any time the Store emits a change event, the Widget will automatically be rebuilt. No need to manage subscriptions!
flutter_bloc v0.7.0
![](https://camo.githubusercontent.com/0839dce73f6f29c830c4f1a4989182bca71745a88b796387115cafd442fbba3d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f66656c616e67656c2f626c6f632e7376673f7374796c653d736f6369616c)
Flutter Widgets that make it easy to implement the BLoC (Business Logic Component) design pattern. Built to be used with the bloc state management package.
synchronized v2.1.0
![](https://camo.githubusercontent.com/9bd4c10c661f287fa9dbf026fdeeafb26d643012610698a38f788412704d43ed/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74656b617274696b2f73796e6368726f6e697a65642e646172742e7376673f7374796c653d736f6369616c)
Lock mechanism to prevent concurrent access to asynchronous code.
import 'package:synchronized/synchronized.dart';
main() async {
// Use this object to prevent concurrent access to data
var lock = new Lock();
...
await lock.synchronized(() async {
// Only this block can run (once) until done
...
});
}
Flutter Hooks v0.2.1
![](https://camo.githubusercontent.com/0f9f5554a503da74d270eaf22fd377e37cefe9d0f12974e17652ba56034f4f39/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f72726f757373656c4769742f666c75747465725f686f6f6b732e7376673f7374796c653d736f6369616c)
A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
class Example extends HookWidget {
final Duration duration;
const Example({@required this.duration});
@override
Widget build(BuildContext context) {
final controller = useAnimationController(duration: duration);
return Container();
}
}
Flutter MobX v0.0.14
![](https://camo.githubusercontent.com/d1a9cb637411b8a7a1d687fe6926c49e841008a1d39be8308b0dd670644d5f02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6f62786a732f6d6f62782e646172742e7376673f7374796c653d736f6369616c)
MobX is a library for reactively managing the state of your applications. Use the power of observables, actions, and reactions to supercharge your Dart and Flutter apps.
part 'counter.g.dart';
class Counter = _Counter with _$Counter;
abstract class _Counter implements Store {
@observable
int value = 0;
@action
void increment() {
value++;
}
}
class CounterExample extends StatefulWidget {
@override
_CounterExampleState createState() => _CounterExampleState();
}
class _CounterExampleState extends State<CounterExample> {
final _counter = Counter();
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Observer(
builder: (_) => Text('${_counter.value}'),
),
Button(
onPressed: _counter.increment,
child: const Icon(Icons.add),
)
],
);
}
}
Video Player (Flutter Team) v0.10.0+2
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
A Flutter plugin for iOS and Android for playing back video on a Widget surface.
chewie v0.9.6
![](https://camo.githubusercontent.com/3a549ac0b5cba723e65c5259620c5d9281a997eb1315388d81c1b5914369c6b0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f627269616e6567616e2f6368657769652e7376673f7374796c653d736f6369616c)
The video player for Flutter with a heart of gold.
The video_player plugin provides low-level access to video playback. Chewie uses the video_player under the hood and wraps it in a friendly Material or Cupertino UI!
audioplayers v0.9.0
![](https://camo.githubusercontent.com/710adbab187115fcc8ad2b2162fcb2c727e64685e543a649b76f91505e458a82/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c75616e706f747465722f617564696f706c617965722e7376673f7374796c653d736f6369616c)
A Flutter plugin to play multiple audio files simultaneously (Android/iOS).
Flutter Sound v1.3.2
![](https://camo.githubusercontent.com/dc814be47498fe16b3ccab9e7de626792312fe43af03b963560d5efeac959279/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646f6f626f6f6c61622f666c75747465725f736f756e642e7376673f7374796c653d736f6369616c)
This plugin provides simple recorder and player functionalities for both Android and iOS.
audioplayer v0.5.2
![](https://camo.githubusercontent.com/0f2b116c5013f92e3a15c5d47f6fe47bbe2d4e4274210a830b25ff8f686b45c3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f72786c61627a2f617564696f706c617965722e7376673f7374796c653d736f6369616c)
A flutter plugin to play audio files
AudioPlayer audioPlugin = new AudioPlayer();
audioPlayer.play(kUrl);
audioPlayer.pause();
audioPlayer.stop();
path_provider (Flutter Team) v0.5.0+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
A Flutter plugin for finding commonly used locations on the filesystem. Supports iOS and Android.
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
open_file v1.2.3
![](https://camo.githubusercontent.com/aaeb9ae6e749e87b075e0d9175a1f85b15abaf3481f684ac17619242de6e62e2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6372617a65636f6465722f6f70656e5f66696c652e7376673f7374796c653d736f6369616c)
A plug-in that can call native apps to open files with string result in flutter. Supports iOS (UTI) and Android (Intent)
import 'package:open_file/open_file.dart';
OpenFile.open("/sdcard/example.txt");
Shared preferences (Flutter Team) v0.5.1+1
![](https://camo.githubusercontent.com/c03d7e1bf0fe40f910693999a0608c5d6903158d85accde03d24499c09291d86/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465722f706c7567696e732e7376673f7374796c653d736f6369616c)
Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.
incrementCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
int counter = (prefs.getInt('counter') ?? 0) + 1;
print('Pressed $counter times.');
await prefs.setInt('counter', counter);
}
sqflite v1.1.1
![](https://camo.githubusercontent.com/60fa20cc02245afdad581459328ca16a75d73ad69065661dc11f780a27098dee/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74656b617274696b2f7371666c6974652e7376673f7374796c653d736f6369616c)
- Support transactions and batches
- Automatic version management during open
- Helpers for insert/query/update/delete queries
- DB operation executed in a background thread on iOS and Android
redux_persist v0.8.1
![](https://camo.githubusercontent.com/514aecfbb7dde2558331f26d5df05f80d161f59a1bad0fa0a84df0acb6f46332/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f43726574657a792f72656475785f706572736973742e7376673f7374796c653d736f6369616c)
Features:
- Save and load from multiple engine (Flutter, Web, File, custom)
- Fully type safe
- Transform state and raw on load/save
- Custom serializers
- Easy to use, integrate into your codebase in a few minutes!
CookieJar v1.0.0
![](https://camo.githubusercontent.com/0e1c0ed8e752e757d4110c3182510fa745066ea64b1f8e1ff4e92da87ef8a438/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666c75747465726368696e612f636f6f6b69655f6a61722e7376673f7374796c653d736f6369616c)
import 'package:cookie_jar/cookie_jar.dart';
void main() async {
List<Cookie> cookies = [new Cookie("name", "wendux"), new Cookie("location", "china")];
var cj = new CookieJar();
//Save cookies
cj.saveFromResponse(Uri.parse("https://www.baidu.com/"), cookies);
//Get cookies
List<Cookie> results = cj.loadForRequest(Uri.parse("https://www.baidu.com/xx"));
print(results);
}
sembast v1.14.0
![](https://camo.githubusercontent.com/b8e2a1ff44fb84133fc4b1494393484d149b65406fbabfd34b38343e88ccf2b0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74656b617274696b2f73656d626173742e646172742e7376673f7374796c653d736f6369616c)
NoSQL persistent embedded file system document-based database for Dart VM and Flutter with encryption support.
await db.put('Simple application', 'title');
await db.put(10, 'version');
await db.put({'offline': true}, 'settings');
// read values
String title = await db.get('title') as String;
int version = await db.get('version') as int;
Map settings = await db.get('settings') as Map;
// ...and delete
await db.delete('version');
hydrated v1.2.2
![](https://camo.githubusercontent.com/6da780ac4a667ceb828b56266ef7b73d3a4ab78a2c29af1f0d817c341fe1e57b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c756b6570696768657474692f68796472617465642e7376673f7374796c653d736f6369616c)
Hydrated provides a BehaviorSubject that automatically persists to Flutter's local storage and hydrates on creation!
All values are persisted with shared_preferences and restored with automatic hydration.
final count$ = HydratedSubject<int>("count", seedValue: 0);
/// count$ will automatically be hydrated with 42 next time it is created
count$.add(42);
objectdb_flutter v0.0.4
![](https://camo.githubusercontent.com/71297f00f0f5bfee1953be16583cbe9b9cc7416065f0d2ca9902b2722f5100c5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6e65747a2d636861742f6f626a65637464625f666c75747465722e7376673f7374796c653d736f6369616c)
db = ObjectDB(File(dbFilePath));
db.open();
// insert sample data
db.insert({
'name': {'first': 'Alex', 'last': 'Boyle'},
'message': 'abc',
'active': true,
'count': 0,
});
mkvv_flutter v1.0.10
![](https://camo.githubusercontent.com/bea7a41a1f9e00dac3e3bd2bf9d39096c324d18b645afe4804493f13e15d0217/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7975796f6e676d616f2f6d6d6b765f666c75747465722e7376673f7374796c653d736f6369616c)
Plugin that allow Flutter to read value from persistent storage or save value to persistent storage based on MMKV framework.
MmkvFlutter mmkv = await MmkvFlutter.getInstance();
mmkv.setBool('boolKey', true);
print('get bool value is ${ await mmkv.getBool('boolKey')}');
String stringtest = await mmkv.getString('stringKey') + '1';
print('GetSetStringTest value is $stringtest');
await mmkv.setString('stringKey', stringtest);
logging (Flutter Team) v0.11.3+2
![](https://camo.githubusercontent.com/3f7c66c1fdfa631353ad15da1657a63234592873f425e1ca81f52bde2461ee2e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646172742d6c616e672f6c6f6767696e672e7376673f7374796c653d736f6369616c)
Provides APIs for debugging and error logging. This library introduces abstractions similar to those used in other languages, such as the Closure JS Logger and java.util.logging.Logger.
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((LogRecord rec) {
print('${rec.level.name}: ${rec.time}: ${rec.message}');
});
catcher v0.1.1
![](https://camo.githubusercontent.com/54e0cf709921d72aeed9d26fd367798c951ce50f7b4457d98b3da690c98af23d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a686f6d6c616c612f636174636865722e7376673f7374796c653d736f6369616c)
Plugin for error catching. Allows handling errors when they're not catched by developer. Plugin provides multiple handlers for errors.
main() {
var debugOptions = CatcherOptions(
DialogReportMode(),
[ConsoleHandler()],
);
var releaseOptions = CatcherOptions(
DialogReportMode(),
[EmailManualHandler(["[email protected]"])],
);
Catcher(MyApp(), debugConfig: debugOptions, releaseConfig: releaseOptions);
}
To the extent possible under law, Simon Leier has waived all copyright and related or neighboring rights to this work.