Top 10 Flutter Useful Package

In this article, I am going to discuss some of the most famous and useful flutter packages. 

1. shared_preferences

The shared_preferences package saves data in key-value pairs in your local storage, So it is a good package if you want to store small data in your app.

Save data

SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.setString("username", username); //string dta
preferences.setInt("pin", 1234); //integer data
preferences.setBool("status", true); //boolean data
preferences.setDouble("width", 11.2); //double data

Read data

SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.getString("username"); //string data
preferences.getInt("username"); // integer data
preferences.getBool("status"); // boolean data
preferences.getBool("width"); // double data

Remove data

SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.remove("username"); // double data

Package link: https://pub.dev/packages/shared_preferences

2. cached_network_image

The cached_network_image package gets the image from the URL and shows it in the app and also it keeps the image in cached memory for future use.

//With a placeholder
CachedNetworkImage(
        imageUrl: "http://via.placeholder.com/350x150",
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(Icons.error),
     ),

//Or with a progress indicator 
CachedNetworkImage(
        imageUrl: "http://via.placeholder.com/350x150",
        progressIndicatorBuilder: (context, url, downloadProgress) => 
                CircularProgressIndicator(value: downloadProgress.progress),
        errorWidget: (context, url, error) => Icon(Icons.error),
     ),

Package link: https://pub.dev/packages/cached_network_image

3. http

The http package is used to send and receive HTTP requests and responses from the internet or in simple language you can say it is used to handle REST APIs.

var url = Uri.parse('https://example.com/whatsit/create');
var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');

print(await http.read('https://example.com/foobar.txt'));

Package link: https://pub.dev/packages/http

4. webview_flutter

If want to open a web URL in your app, then it is a good option to use it provides a web view widget in a flutter.

bool _isLoading = true;
  final _key = UniqueKey();
  String url;

  @override
  Widget build(BuildContext context) {
    final Completer<WebViewController> _controller =
        Completer<WebViewController>();
    final UserProvider userProvider = Provider.of<UserProvider>(context);
    url = "https://www.c-sharpcorner.com";
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Text(“C# Corner"),
      ),
      body: Stack(
        children: <Widget>[
          WebView(
            key: _key,
            initialUrl: url,
            javascriptMode: JavascriptMode.unrestricted,
            onWebViewCreated: (WebViewController webViewController) {
              _controller.complete(webViewController);
            },
            onPageFinished: (finish) {
              setState(() {
                _isLoading = false;
              });
            },
          ),
          _isLoading
              ? Center(
                  child: CircularProgressIndicator(),
                )
              : Stack(),
        ],
      ),
    );
  }

Package link: https://pub.dev/packages/webview_flutter

5. url_launcher

When you want to open any URL from the app to your web browser then the url_launcher flutter package is a good choice, it’s open your URL in the web browser.

void launchUrl({String url}) async {
 if (await canLaunch(url)) {
   await launch(url);
 } else {
   throw 'Could not launch $url';
 }
}

launchUrl(url: “https://www.c-sharpcorner.com”);

Package link: https://pub.dev/packages/url_launcher

6. dio

The dio is a powerful flutter package that supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, ConnectionTimeout, etc.

Using the dio package you can perform GET, POST, File downloading, File Uploading, and many more.

I will suggest you read this article, It will help you to how to use dio in your app.

Package link: https://pub.dev/packages/dio

7. path_provider

The path_provider package gives the folder location path, so using that path you can easily save the file there.

Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;

Package link: https://pub.dev/packages/path_provider

8. package_info

The package_info works as a bridge to fetch the application version information on both iOS and 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;

Package link: https://pub.dev/packages/package_info

9. connectivity

The connectivity package allows flutter apps to discover network connectivity and configure accordingly. This plug-in has the ability to distinguish between cellular and WiFi connections.

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.
}

Package link: https://pub.dev/packages/connectivity

10. flutter_share

The flutter_share plugin gives you the opportunity to share your content to other platforms.

Future<void> share(dynamic link, String title) async {
 await FlutterShare.share(
     title: title, text: title, linkUrl: link, chooserTitle: shareTitle);
}

Package link: https://pub.dev/packages/flutter_share

Conclusion

These are some of the most useful flutter plugins that flutter developers are using. There are more plugins that are also popular but this is based on my knowledge that I use as a flutter developer.  

Thanks for reading....