Speed up your development with theses 20 flutter packages

Shan Shaji
5 min readJan 29, 2023

--

Flutter is a powerful framework for building mobile apps, but it can be time-consuming to build certain features from scratch. Fortunately, there are many packages available that can help speed up development and add functionality to your app. Here are 20 of the top Flutter packages that can save you time and effort:

  1. Provider — A popular package for managing state in your app. It allows you to easily access and update state from anywhere in your code. It can be used as a simple way to access the state of your app by wrapping your entire app with the ChangeNotifierProvider and then you can access the state by wrapping your widgets with the Consumer.
ChangeNotifierProvider(
create: (context) => MyModel(),
child: MyApp(),
);
Consumer<MyModel>(
builder: (context, myModel, child) {
return Text(myModel.someValue);
},
);

2. Dio — A powerful Http client for Dart, perfect for making API calls in your app. It has a lot of features like interceptors, CancelToken and FormData.

Dio dio = Dio();
Response response = await dio.get("https://www.google.com");
print(response);

3. Flutter Connectivity — Allows you to check the device’s network connectivity status and listen for changes. It’s a very useful package when you want to add functionality to your app that depends on the device’s internet connection.

import 'package:flutter_connectivity/flutter_connectivity.dart';
ConnectivityResult connectivityResult = await Connectivity().checkConnectivity();

4. Flutter Toast — A simple package that allows you to easily display toast messages in your app. It allows you to customize the appearance of the toast messages and you can also control the duration of the toast message.

import 'package:fluttertoast/fluttertoast.dart';
Fluttertoast.showToast(
msg: "This is Center Short Toast",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);

5. Flutter Awesome — A collection of awesome Flutter packages, plugins, and resources. It has a lot of package that can be used in different scenarios.

6 .Flutter Image Compress — A package that can compress images before uploading to the server. It supports both File and Uint8List types.

File compressedFile = await FlutterImageCompress.compressAndGetFile(
file.absolute.path, file.absolute.path,
quality: 88,
minWidth: 2300,
minHeight: 1500,
rotate: 180,
);

7. Flutter Local Notifications — A package that allows you to schedule and display local notifications in your app.

8. Flutter Spinkit — A collection of loading indicators animated with flutter. It’s a great package if you want to add a loading animation to your app without having to create one yourself.

SpinKitFadingCircle(
itemBuilder: (_, int index) {
return DecoratedBox(
decoration: BoxDecoration(
color: index.isEven ? Colors.red : Colors.green,
),
);
},
)

9. Flutter Easy Loading — A package that allows you to easily create and show loading indicators in your app. It provides a variety of loading animations to choose from, and you can also customize the appearance of the loading indicator.

EasyLoading.show(status: 'loading...');

10. Flutter Animated Background — A package that allows you to easily add an animated background to your app. It supports a variety of animation types, and you can also customize the appearance of the background.

AnimatedBackground(
behaviour: RandomParticleBehaviour(),
vsync: this,
child: Container(),
),

11. Flutter Video Player — A package that allows you to easily play videos in your app. It supports both local and remote videos, and you can also customize the appearance of the video player.

VideoPlayerController controller = VideoPlayerController.network(
'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4',
);

12. Flutter Qr Scanner — A package that allows you to easily scan QR codes in your app. It supports both front and rear cameras, and you can also customize the appearance of the QR scanner.

QrScanner(
onError: (context, error) => Text(error.toString()),
onScan: (value) {
if (value != null) {
print(value);
}
},
)

13. Flutter Sound — A package that allows you to easily play and record audio in your app. It supports a variety of audio formats, and you can also customize the appearance of the audio player.

FlutterSound flutterSound = new FlutterSound();
flutterSound.startPlayer(localFilePath);

14. Flutter Interactive Viewer — A package that allows you to easily create interactive views in your app. It supports pinch to zoom, pan, and rotate gestures, and you can also customize the appearance of the interactive view.

InteractiveViewer(
child: FlutterLogo(),
)

15. Flutter PDF Viewer — A package that allows you to easily view PDF files in your app. It supports both local and remote PDF files, and you can also customize the appearance of the PDF viewer.

16. Flutter Signature — A package that allows you to easily add a signature pad to your app. It supports both touch and mouse input, and you can also customize the appearance of the signature pad.

17. url_launcher is a Flutter package that allows you to launch a URL in the mobile device's browser. An example use of the package would be to launch a website when a button is pressed:

import 'package:url_launcher/url_launcher.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: RaisedButton(
onPressed: () async {
const url = 'https://www.example.com';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
},
child: Text('Open example.com'),
),
),
),
);
}
}

This code snippet shows how we can use url_launcher package to launch a website on button press by checking if the URL can be launched before actually launching it, and if it can't be launched, it will throw an error message.

18. Flutter Location — A package that allows you to easily get the device’s current location and listen for location changes in your app. It supports both iOS and Android platforms, and you can also customize the appearance of the location status.

19. Flutter Sms — A package that allows you to easily send SMS messages in your app. It supports both iOS and Android platforms, and you can also customize the appearance of the SMS status.

void _sendSMS(String message, List<String> recipents) async {
String _result = await sendSMS(message: message, recipients: recipents)
.catchError((onError) {
print(onError);
});
print(_result);
}

String message = "This is a test message!";
List<String> recipents = ["1234567890", "5556787676"];

_sendSMS(message, recipents);

20. Flutter Email Sender — A package that allows you to easily send Email messages in your app. It supports both iOS and Android platforms, and you can also customize the appearance of the Email status.

final Email email = Email(
body: 'Email Body',
subject: 'Email Subject',
recipients: ['example@example.com'],
attachmentPath: 'path/to/attachment.zip',
);
await FlutterEmailSender.send(email);

In conclusion, these are just a few examples of the many packages available in Flutter that can help speed up development. By using these packages, you can easily add features and functionality to your app without having to write a lot of code yourself. Remember to always check the package documentation and usage examples before implementing it in your project.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Shan Shaji
Shan Shaji

Written by Shan Shaji

Skilled in Flutter, React, MongoDB, Express, and Typescript. Experienced with Flutter architectures, state management, Firebase, and cloud functions.

No responses yet

Write a response