34 lines
990 B
Dart
34 lines
990 B
Dart
import 'package:flutter/foundation.dart';
|
|||
|
|
import 'package:dio/dio.dart';
|
||
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
|
|
||
|
|
class AuthService extends ChangeNotifier {
|
||
|
|
String _token = '';
|
||
|
|
bool get isLoggedIn => _token.isNotEmpty;
|
||
|
|
|
||
|
|
final Dio _dio = Dio(BaseOptions(baseUrl: 'http://10.0.2.2:8080/api/base'));
|
||
|
|
|
||
|
|
Future<bool> login(String username, String password) async {
|
||
|
|
try {
|
||
|
|
final res = await _dio.post('/auth/login', data: {'username': username, 'password': password});
|
||
|
|
if (res.data['code'] == 200) {
|
||
|
|
_token = res.data['data'];
|
||
|
|
final prefs = await SharedPreferences.getInstance();
|
||
|
|
await prefs.setString('token', _token);
|
||
|
|
notifyListeners();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
} catch (e) {
|
||
|
|
debugPrint('Login failed: $e');
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
Future<void> logout() async {
|
||
|
|
_token = '';
|
||
|
|
final prefs = await SharedPreferences.getInstance();
|
||
|
|
await prefs.remove('token');
|
||
|
|
notifyListeners();
|
||
|
|
}
|
||
|
|
}
|