Flutter SQLite Tutorial

In this tutorial, we shall learn basic SQLite operations with the help of a complete Flutter Application.

Use Case

We maintain a car database where each car has an id, name and number of miles driven. Our Application should be able to insert a row into the database, query rows, update a row or delete a row based on the required fields provided.

About UI

Following example application contains a TabBar with TabBarView for operations Insert, View, Query, Update and Delete operations that we shall perform on the car_table.

In Insert Screen, we shall take car name and number of miles it has gone through TextField widgets. Then when you click on the Insert button, we shall prepare the Car object through _insert() method of main() and call insert() method of Database Helper.

In View Screen, there a Refresh button. When you click on it, it queries all the rows and displays them in a ListView.

In Query Screen, there is a TextField to get the name of the car from user. We have attached onChanged() method, so that, when user starts typing, it dynamically queries the table and shows the rows below the button in a ListView.

In Update Screen, we have three TextFields for reading id, name and miles from user. When user enters these fields and click update button, we shall update name and miles for the id provided. You can go the View tab, press on Refresh button to see if the update happened.

In Delete Screen, we have a TextField to read id. When user provides the id and presses Delete button, the row shall be deleted, based on id, if present in the database table.

Dependencies

Under dependencies section, below flutter property, add sqlite and path packages.

And click on Packages get button on the top right corner of editor.

No need to mention the version number for the packages sqflite and path.

Class File

Under lib folder, create a file named car.dart with class as shown below.

car.dart

We shall use this class type to transfer data between UI (main.dart) and Database Helper Class.

Database Helper Class

Create a Database helper Class as shown below.

It contains methods to create a Database if not present, connect to the database, perform SQLite operations like query rows from table, update a row, delete a row, insert a row, etc.

dbhelper.dart

Observe that we have imported the sqflite and path at the start of our main.dart file.

Flutter UI

Following is the complete main.dart file.

main.dart

Output

Conclusion

In this Flutter Tutorial, we learned how to use SQLite in Flutter Application.