Application propre sans erreurs. Bonne base sur laquelle repartir de zero en cas de soucis majeurs.

This commit is contained in:
DahoudG
2024-08-26 22:45:58 +00:00
parent bcf714ab73
commit eb8368b1ee
24 changed files with 397 additions and 201 deletions

View File

@@ -0,0 +1,22 @@
import 'dart:convert';
import 'package:afterwork/data/models/user_model.dart';
import 'package:afterwork/core/constants/urls.dart';
import 'package:http/http.dart' as http;
import '../../core/errors/exceptions.dart';
class UserRemoteDataSource {
final http.Client client;
UserRemoteDataSource(this.client);
Future<UserModel> getUser(String id) async {
final response = await client.get(Uri.parse('${Urls.baseUrl}/user/$id'));
if (response.statusCode == 200) {
return UserModel.fromJson(json.decode(response.body));
} else {
throw ServerException();
}
}
}

View File

@@ -0,0 +1,14 @@
import 'package:afterwork/domain/entities/user.dart';
import 'package:afterwork/domain/repositories/user_repository.dart';
import 'package:afterwork/data/datasources/user_remote_data_source.dart';
class UserRepositoryImpl implements UserRepository {
final UserRemoteDataSource remoteDataSource;
UserRepositoryImpl({required this.remoteDataSource});
@override
Future<User> getUser(String id) async {
return await remoteDataSource.getUser(id);
}
}

View File

@@ -0,0 +1,26 @@
import '../../domain/entities/user.dart';
class UserModel extends User {
const UserModel({
required super.id,
required super.name,
required super.email,
});
factory UserModel.fromJson(Map<String, dynamic> json) {
return UserModel(
id: json['id'],
name: json['name'],
email: json['email'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'email': email,
};
}
}