7 must know Flutter packages for beginners
Tags: flutter, dart, android
Published: 2020-11-24 09:37:09

As Flutter is gaining traction, more and more developers are trying to learn and understand this new framework. Flutter is easy as compared to android, it saves a lot of development time and also helps in implementing complex designs easily. But wait, how do you implement native features such as accessing the device camera or using location services in flutter? Sounds complex doesn't it? Well thankfully, Flutter supports shared packages contributed by other developers which can be used in Dart and Flutter ecosystem. So, instead of writing a code for a functionality from scratch, you can use a package which does the same thing, saving your valuable time!

Packages are very much similar to libraries, saving a lot of your precious time. The following list contains 10 packages which every Flutter developer must know!    

![Let's do this](https://media.giphy.com/media/eYp5zQ5GX0PUXM47u1/giphy.gif)

##1. dio

Most of the time while developing an application, we need to send some http requests to get some data or sometimes post some data. Dio is a powerful Http client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc.

And it's super simple to use!

Example:

```dart
import 'package:dio/dio.dart';
void getHttp() async {
  try {
    Response response = await Dio().get("http://www.google.com");
    print(response);
  } catch (e) {
    print(e);
  }
}
```
To know more about this package: [Click here](https://pub.dev/packages/dio)

##2. location

Want to access the location of the user? then, location is the package that solves this problem.

Example.

```dart
import 'package:location/location.dart';
final currentLoc = await Location().getLocation();
print(currentLoc.latitude);
print(currentLoc.longitude); 
```

You can also use it for displaying maps in your application, but you'll have to have the Google Maps API key for this functionality to work.

 ![Maps](https://raw.githubusercontent.com/Lyokone/flutterlocation/master/location/src/demo_readme.gif)

To know more about this package: [Click here](https://pub.dev/packages/location)

##3. image_picker

Developing apps require various functionalities such as taking a new picture using a camera or uploading an existing image from the gallery. Image_picker is a plugin for iOS and Android for picking images from the image library, and taking new pictures with the camera.

Example:


```dart
import 'package:image_picker/image_picker.dart';
File _image;
  final picker = ImagePicker();

  Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.camera);

    setState(() {
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }
``` 

To know more about this package: [Click here](https://pub.dev/packages/image_picker)

##4. sqflite

Flutter doesn't have a built-in abstraction for accessing the SQLite Database. So using sqflite package, you can access the SQLite database in both Android and iOS. The popularity of this package is 100%, so its is a well managed package.

Example:

```dart
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'demo.db');

Database database = await openDatabase(path, version: 1,
    onCreate: (Database db, int version) async {
  // When creating the db, create the table
  await db.execute(
      'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
});

```

To know more about this package: [Click here](https://pub.dev/packages/sqflite)


##5. cached_network_image

Loading images from the internet can take some time and because of which the user experience might not be that pleasant. It's always a nice idea to show a placeholder when the image is loading. Cached_network_image helps with this problem. Not only does it helps to provide a placeholder, but also stores the image in the cache, so whenever the user opens the application again, the image will be loaded from the cache which takes literally microseconds.

Example:

```dart
CachedNetworkImage(
        imageUrl: "http://via.placeholder.com/350x150",
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(Icons.error),
     ),
```
To know more about this package: [Click here](https://pub.dev/packages/cached_network_image)

##6. path_provider

File handling is one major feature while developing an application. There may be instances where the application needs to download a data and store it in your device. Path_provider helps you to get commonly used locations on the filesystem. You can access directories like Temporary directory, Documents directory, Downloads directory, etc and store files in these directories.

Example:

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

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
```
To know more about this package: [Click here](https://pub.dev/packages/path_provider)

##7. local_auth

This Flutter plugin provides means to perform local, on-device authentication of the user. This includes biometric authentication iOS and fingerprint APIs on android.

![Fingerprint](https://media.giphy.com/media/dnvW7Ilz3iEg/giphy.gif)

To know more about this package: [Click here](https://pub.dev/packages/local_auth)

Developers after knowing these packages be like:

![Strong](https://media.giphy.com/media/D7z8JfNANqahW/giphy.gif)

##Conclusion:

If this post was helpful then don't forget to like it and you can also add some more packages I might've missed out in the comments section.

###Connect with me:

[LinkedIn](https://www.linkedin.com/in/rijin-thomas/)