При разработке приложений Flutter интеграция базы данных MySQL с серверной частью PHP является общим требованием. В этой статье будут рассмотрены несколько методов получения данных из базы данных MySQL во Flutter с использованием PHP. Каждый метод сопровождается примерами кода, которые помогут вам понять процесс реализации. Давайте погрузимся!
Метод 1: использование пакета HTTP
Пример кода:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<List<dynamic>> fetchData() async {
final response = await http.post(
Uri.parse('http://your-php-api-endpoint'),
);
if (response.statusCode == 200) {
final jsonData = jsonDecode(response.body);
return jsonData;
} else {
throw Exception('Failed to fetch data');
}
}
Метод 2: использование пакета Dio
Пример кода:
import 'package:dio/dio.dart';
Future<List<dynamic>> fetchData() async {
final dio = Dio();
final response = await dio.post('http://your-php-api-endpoint');
if (response.statusCode == 200) {
return response.data;
} else {
throw Exception('Failed to fetch data');
}
}
Метод 3: использование библиотеки Flutter MySQL
Пример кода:
import 'package:flutter_mysql/flutter_mysql.dart';
Future<List<dynamic>> fetchData() async {
final mySqlConnection = MySqlConnection(
host: 'your-host',
port: 3306,
user: 'your-username',
password: 'your-password',
db: 'your-database',
);
await mySqlConnection.open();
final results =
await mySqlConnection.execute('SELECT * FROM your-table');
await mySqlConnection.close();
return results;
}
Метод 4. Использование синхронизированных HTTP-запросов
Пример кода:
import 'package:synchronized/synchronized.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
List<dynamic> fetchData() {
final lock = Lock();
List<dynamic> data;
lock.synchronized(() async {
final response = await http.post(
Uri.parse('http://your-php-api-endpoint'),
);
if (response.statusCode == 200) {
data = jsonDecode(response.body);
}
});
return data;
}
Метод 5: использование операций MySQL CRUD
Пример кода:
<?php
$servername = "your-servername";
$username = "your-username";
$password = "your-password";
$dbname = "your-database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM your-table";
$result = $conn->query($sql);
$data = array();
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
$conn->close();
echo json_encode($data);
?>
Метод 6: использование пакета модернизации
Пример кода:
import 'package:retrofit/http.dart';
import 'package:dio/dio.dart';
part 'api_service.g.dart';
@RestApi(baseUrl: "http://your-php-api-endpoint")
abstract class ApiService {
factory ApiService(Dio dio, {String baseUrl}) = _ApiService;
@POST("/")
Future<List<dynamic>> fetchData();
}
Метод 7: использование GraphQL
Пример кода:
import 'package:graphql/client.dart';
Future<List<dynamic>> fetchData() async {
final link = HttpLink('http://your-php-api-endpoint');
final client = GraphQLClient(cache: GraphQLCache(), link: link);
final query = gql('''
query {
yourTable {
id
name
...
}
}
''');
final result = await client.query(query);
if (result.hasException) {
throw Exception('Failed to fetch data');
}
final data = result.data?['yourTable'];
return data;
}
В этой статье мы рассмотрели семь различных методов получения данных из базы данных MySQL в приложении Flutter с использованием PHP. Каждый метод предлагает уникальный подход с примерами кода, что позволяет вам выбрать тот, который соответствует требованиям вашего проекта. Реализуя эти методы, вы можете создавать мощные и эффективные приложения Flutter с интеграцией базы данных MySQL.