Flutter, React, Vue.js ve diğer tüm platformlar için güçlü ve esnek API
Hemen Başlahttps://dijitalbilet.com.tr/api/v1
Bearer Token
application/json
JSON
dependencies:
flutter:
sdk: flutter
http: ^1.1.0
shared_preferences: ^2.2.2
dio: ^5.3.2
provider: ^6.0.5
import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ApiService {
static const String baseUrl = 'https://dijitalbilet.com.tr/api/v1';
late Dio _dio;
ApiService() {
_dio = Dio(BaseOptions(
baseUrl: baseUrl,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
));
_dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) async {
final token = await getToken();
if (token != null) {
options.headers['Authorization'] = 'Bearer $token';
}
handler.next(options);
},
));
}
Future<String?> getToken() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getString('auth_token');
}
Future<void> saveToken(String token) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('auth_token', token);
}
Future<void> clearToken() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('auth_token');
}
}
Future<Map<String, dynamic>> login(String email, String password) async {
try {
final response = await _dio.post('/auth/login', data: {
'email': email,
'password': password,
});
if (response.data['success']) {
final token = response.data['data']['token'];
await saveToken(token);
return response.data;
}
throw Exception(response.data['message']);
} catch (e) {
throw Exception('Login failed: $e');
}
}
Future<Map<String, dynamic>> register({
required String name,
required String email,
required String password,
String? phone,
}) async {
try {
final response = await _dio.post('/auth/register', data: {
'name': name,
'email': email,
'password': password,
'password_confirmation': password,
'phone': phone,
});
if (response.data['success']) {
final token = response.data['data']['token'];
await saveToken(token);
return response.data;
}
throw Exception(response.data['message']);
} catch (e) {
throw Exception('Registration failed: $e');
}
}
Future<List<Event>> getEvents({
int? category,
int? city,
String? date,
String? search,
int page = 1,
int perPage = 15,
}) async {
try {
final response = await _dio.get('/events', queryParameters: {
if (category != null) 'category': category,
if (city != null) 'city': city,
if (date != null) 'date': date,
if (search != null) 'search': search,
'page': page,
'per_page': perPage,
});
if (response.data['success']) {
return (response.data['data'] as List)
.map((json) => Event.fromJson(json))
.toList();
}
throw Exception(response.data['message']);
} catch (e) {
throw Exception('Failed to fetch events: $e');
}
}
Flutter projenizi oluşturun ve gerekli paketleri ekleyin.
flutter create dijital_bilet_app
cd dijital_bilet_app
flutter pub add http dio shared_preferences provider
Yukarıdaki ApiService sınıfını projenize ekleyin.
State management için Provider'ı yapılandırın.
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => AuthProvider()),
ChangeNotifierProvider(create: (_) => EventsProvider()),
],
child: MyApp(),
),
);
}
API bağlantısını test edin ve uygulamanızı çalıştırın.