-
반응형
오늘은 플러터로 앱을 개발할 때,
사용자의 순위를 보여주는 기능이 들어가야 한다면,
어떻게 코드를 짜야하는지 알려드릴게요!
(참고로 저는 파이어베이스를 서버로 쓰고 있어요)
1. 사용자의 정보 내림차순으로 가져오기
- 각 사용자의 필드에 점수가 저장되어 있다면, 점수를 기준으로 내림차순으로 사용자 데이터를 가져와야해요.
2. 순위 계산하기
- 가져온 사용자 데이터에서 내 유저아이디가 몇번째에 위치해 있는지 계산해야해요.
- 인덱스는 0부터 시작하지만, 순위는 1등부터 존재하므로 내 순서에 1을 더해주면 돼요.
아래 코드를 참고해주세요!
Future<Map<String, int>> _calculateRank(int myScore) async { int totalUsers = 0; int myRank = -1; //파이어베이스에서 랭킹을 계산할 데이터 내림차순으로 가져오기(본인이 사용하는 서버 코드 작성) QuerySnapshot querySnapshot = await FirebaseFirestore.instance .collection('Ranking') .doc('${_seasonController.currentSeason}') .collection('${_userModelController.favoriteResort}') .orderBy('totalScore', descending: true) .get(); List<QueryDocumentSnapshot> documents = querySnapshot.docs; for (int i = 0; i < documents.length; i++) { if (documents[i].id == _userModelController.uid) { myRank = i + 1; // 등수는 1부터 시작하기 때문에 1을 더해줍니다. break; } } return {'rank': myRank}; }
어쩌면 들어와서
지금 당신의 그 고민이
해결되었을지도
from.
우리동네미인
반응형'Flutter' 카테고리의 다른 글
[Flutter] 대표적인 예외처리 방법! (try-catch) (0) 2023.07.06 [Flutter] 플러터 백그라운드 위치 추적 성공기 (0) 2023.07.05