Skip to content

Commit

Permalink
Merge pull request #11 from SWM-M3PRO/feature/M3-118-individualModePi…
Browse files Browse the repository at this point in the history
…xelService

M3-118 개인전 픽셀 받아오는 서비스 구현
  • Loading branch information
qjvk2880 authored Jun 28, 2024
2 parents c7fdb4e + 18b6ee1 commit 4fecf81
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/controllers/map_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';

import '../service/individual_pixel_service.dart';

class MapController extends GetxController {
final IndividualPixelService individualPixelService = IndividualPixelService();

static const String darkMapStylePath = 'assets/map_style/dark_map_style.txt';
static const String userMarkerId = 'USER';

Expand All @@ -25,6 +29,7 @@ class MapController extends GetxController {
await updateCurrentLocation();
_createUserMarker();
_trackUserLocation();
await individualPixelService.getIndividualPixels(currentLatitude: currentLocation.latitude!, currentLongitude: currentLocation.longitude!);
}

void _trackUserLocation() {
Expand Down
45 changes: 45 additions & 0 deletions lib/models/individual_pixel.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
class IndividualPixel {
final int pixelId;
final double latitude;
final double longitude;
final int userId;
final int x;
final int y;

IndividualPixel({
required this.pixelId,
required this.latitude,
required this.longitude,
required this.userId,
required this.x,
required this.y,
});

factory IndividualPixel.fromJson(Map<String, dynamic> json) {
return switch (json) {
{
'pixelId' : var pixelId,
'latitude' : var latitude,
'longitude' : var longitude,
'userId' : var userId,
'x' : var x,
'y' : var y,
} =>
IndividualPixel(
pixelId: pixelId,
latitude: latitude,
longitude: longitude,
userId: userId,
x: x,
y: y,),
_ => throw const FormatException('Failed to load Pixel')
};
}

static List<IndividualPixel> listFromJson(List<dynamic> jsonList) {
return [
for(var element in jsonList)
IndividualPixel.fromJson(element),
];
}
}
34 changes: 34 additions & 0 deletions lib/service/individual_pixel_service.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:dio/dio.dart';

import '../models/individual_pixel.dart';
import '../utils/dio_service.dart';

class IndividualPixelService {
static final IndividualPixelService _instance =
IndividualPixelService._internal();

final Dio dio = DioService().getDio();

IndividualPixelService._internal();

factory IndividualPixelService() {
return _instance;
}

Future<List<IndividualPixel>> getIndividualPixels({
required double currentLatitude,
required double currentLongitude,
int radius = 1000,
}) async {
var response = await dio.get(
'/pixels/individual-mode',
queryParameters: {
'current-latitude': currentLatitude,
'current-longitude': currentLongitude,
'radius': radius,
},
);

return IndividualPixel.listFromJson(response.data['data']);
}
}

0 comments on commit 4fecf81

Please sign in to comment.