dependencies:
http: ^0.13.4
shared_preferences: ^2.0.7
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
Future<bool> login(String url, Map<String, String> credentials) async {
try {
final response = await http.post(
Uri.parse(url),
body: credentials,
);
if (response.statusCode == 200) {
// Fetch the 'set-cookie' header from the response
final cookie = response.headers['set-cookie'];
if (cookie != null) {
// Save the cookie in SharedPreferences
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('cookie', cookie);
return true; // Login successful
}
}
return false; // Login failed or cookie missing
} catch (e) {
print("Login error: $e");
return false; // Error occurred
}
}
Future<http.Response> fetchDataWithCookie(String url) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final cookie = prefs.getString('cookie');
final headers = {
'Content-Type': 'application/json',
if (cookie != null) 'Cookie': cookie, // Attach the cookie if available
};
final response = await http.get(
Uri.parse(url),
headers: headers,
);
return response;
}
Future<http.Response> fetchDataAndUpdateCookie(String url) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final cookie = prefs.getString('cookie');
final headers = {
'Content-Type': 'application/json',
if (cookie != null) 'Cookie': cookie,
};
final response = await http.get(
Uri.parse(url),
headers: headers,
);
// Check if the server returned an updated cookie
final newCookie = response.headers['set-cookie'];
if (newCookie != null && newCookie != cookie) {
await prefs.setString('cookie', newCookie); // Update stored cookie
}
return response;
}
Future<void> logout() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.remove('cookie'); // Clear the saved cookie
}
void main() async {
// Example URLs and credentials
final loginUrl = '
https://api.example.com/login';
final fetchDataUrl = '
https://api.example.com/protected-data';
final credentials = {"username": "user", "password": "pass"};
// Login
bool loggedIn = await login(loginUrl, credentials);
if (loggedIn) {
print("Login successful!");
// Fetch data after login
final response = await fetchDataAndUpdateCookie(fetchDataUrl);
if (response.statusCode == 200) {
print("Data fetched successfully: ${response.body}");
} else {
print("Failed to fetch data: ${response.statusCode}");
}
// Logout
await logout();
print("Logged out successfully");
} else {
print("Login failed");
}
}
This is just example,if you dont know how to code use AI,nothing personal
