[flutter] GetX http

sanghun park·2023년 2월 2일
0
post-thumbnail

프로젝트 진행하면서 삽질내용에 대해 적어놓으려고 한다..
우선 카카오로그인 기능 구현중에 로그인 성공시, 서버에서 response로 유저 정보들을 넘겨주는 구조인데,, response.bodybytes를 jsonDecode를 한후에 생성한 모델에 담아주면 될거라고 생각했었다. (아래 코드처럼)

http.Response response = await http.get(Uri.parse(boardUrl));
      List<dynamic> body = jsonDecode(utf8.decode(response.bodyBytes));
      var boardModel =
          body.map((dynamic item) => BoardModel.fromJson(item)).toList();

그런데 왠지 유저정보쪽은 위와 같은 방법으로 했는데 자꾸 타입에러가 나서 자세히 살펴보니 ,,, response안의 user정보가 map형태로 들어있는 구조였다. (위에서는 response가 map형태라면 내가 원하는 정보는 map 안의 map 형태)

따라서 response["users"]를 변수로 생성하고 이 변수를 생성한 유저모델에 담는 형식으로 만들었더니... 성공...

final response = await repository.kakaoLogin(accessToken);
    var user_response = response["user"];
    _userModel.value = UserModel.fromJson(user_response);

userModel을 다른 화면에서 써야하니까 이 변수를 get 을 써서 클래스 아래에 선언해 주었다.

 var _userModel = UserModel().obs;
  UserModel get userModel => _userModel.value;

위의 데이터를 사용하기위해서는 저 변수가 존재하는 getxController를 호출해주기만 하면 된다.

var userModel = Get.find<LoginController>().userModel;
호출한 후, 사용하고 싶은곳에 userModel.유저모델에 선언한 변수 ex) userModel.profile

그리고 이변수가 바뀔때 자동으로 화면에서도 변경되게 하고 싶으면 Obx로 감싸주면 된다. 이방법은 다음 삽질때 올려보도록 하겠음...

profile
개발자를 꿈꾸는 학생

0개의 댓글