Flutter is an open source UI framework by Google, allowing developers to build native mobile, web and desktop applications from a single codebase using its own language, Dart. But managing app data often requires database integration. This post will guide you through connecting Flutter to MySQL.

Setting up a MySQL Database :
1. Install MySQL Server: Download and install MySQL server from the official website.

2. Create a Database and Tables : Open a MySQL client like MySQL Workbench and create a new database to store your Flutter app data.
design your database by creating tables with required fields and relationships to efficiently structure your data.

Connecting Flutter to MySQL:
1. Add Dependencies: Include the mysql1 package in your pubspec.yaml file and run flutter pub get to incorporate it into your project.

dependencies:
   mysql1: ^0.20.0

Establish the Connection:
Import the necessary package in your dart code:

import 'package:mysql1/mysql1.dart';

Use MySqlConnection class to connect:

//Make sure that database is created before connect.

var settings = ConnectionSettings(
      host: 'localhost',   // Add your host IP address or server name
      port: 3307,   // Add the port the server is running on
      user: 'root',    // Your username
      password: 'root',   // Your password
      db: 'test',    // Your Database name
    );
    conn = await MySqlConnection.connect(settings);
    // print('Connected to the database');
    setState(() {
      _isConnected = true; // Set connection status to true
    });

Once connected you can perform Database CRUD operations:

Creating Data:

var result = await conn.query('INSERT INTO users (username, password, email) VALUES (?, ?, ?)', ['Saikat Mondal', 'Password', 'saikat.mondal@defineway.com']);

var userId = result.insertId;
print(userId);

Reading Data:

var result = await conn.query('SELECT * FROM users');

for (var row in result) {
  print('Id: ${row['id']}, Username: ${row['username']}, Password: ${row['password']}, Email: ${row['email']}');
}

Update Data:

var result = await conn.query('UPDATE users SET username = ?, password = ? WHERE id = ?', ['Saikat', 'Password', 27]);

Deleting Data:

var result = await conn.query('DELETE FROM users WHERE id= ?', [27]);