• 2023. 7. 6.

    by. 우리동네미인

    반응형

    오늘은 플러터로 앱을 개발할 때,

    사용자의 순위를 보여주는 기능이 들어가야 한다면,

    어떻게 코드를 짜야하는지 알려드릴게요!

    (참고로 저는 파이어베이스를 서버로 쓰고 있어요)


    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.

    우리동네미인

    반응형