728x90

구글링하다가  getX controller파일에 저장한 함수를 불러오는 부분에서 막혀버렸었다

//notify_home_controller.dart

import 'package:get/get.dart';

class notifyController extends GetxController {
  String whichPage = 'academy';

  void changePage(num) {
    this.whichPage = num;
    print('whichPage값이 ${this.whichPage}로 변경되었습니다.');
    update();
  }
}

위의 코드에서 changePage함수를 사용하고 싶었는데, 메인 코드에서 사용하는 방법을 도저히 찾을 수가 없었다.

그래서 이것저것 시도해보다가 방법을 찾게 되었다.

Widget build(BuildContext context) {
	,,,
    //getX 사용을 위한 컨트롤러 생성
    final usedNotifyController = Get.put(notifyController());
    ,,,,
    onPressed: () {
    	//Get.find<notifyController>().changePage('academy');
        usedNotifyController.changePage('academy');
        }
}

바로 컨트롤러를 불러온 뒤 .을 붙여서 클래스 안에 값들을 가져오면 되는 것이었다.

컨트롤러를 불러오는 방법에는 2가지가 있는데, 하나는 변수로 선언하는 것과 사용할 때마다 Get.find<원하는 컨트롤러 이름>으로 불러오는 것이다.

변수로 저장을 해와도 객체 안에 값이 변경이 될까 싶었는데 계획대로 작동했다.

처음부터 

사실 컨트롤러가 class로 저장된 것만 인지했어도 당연하게 생각을 했을 것인데 그렇지 못하고 시간을 많이 잡아먹었었다.

 

728x90

'Flutter > 짧은 글' 카테고리의 다른 글

[Flutter, zeplin] 버튼 크기 설정하기(dp)  (0) 2022.07.30
728x90

처음으로 막힌 문제는 Zeplin에 나와있는 디자인을 어떻게 그대로 만드는 가였습니다.

Zeplin에서는 크기의 값들은 전부 dp로 나와있었습니다.

이것에 대해 알아본 결과(https://points.tistory.com/66) Android에서 사용하는 픽셀 단위이고, 그 크기는 Flutter에서 사용하는 Logical Pixel 단위와 다르지 않다는 사실을 알게 되었습니다.

그래서 Zeplin에 나와있는 값을 그대로 넣었는데, 똑같은 디자인이 나오지 않았습니다.

알고보니, Zeplin상의 디스플레이 크기와 AVD상의 디스플레이 크기가 달라서 나오는 문제였습니다.

그래서 생각한 방법이 Zeplin상의 비율을 구해서 앱에 적용하는 것이었습니다.

 

사용한 핵심 코드는 width,height를 구하는데 사용한 다음의 코드입니다.

double width = MediaQuery.of(context).size.width;

Zeplin에서 구한 비율을 AVD상의 값에 적용해서 상수로 크기를 정하게 되면 크기가 다른 디바이스에선 또 크기가 깨질 것 같아서 크기를 변수로 선언해서 해당 값을 비율만큼 줄이는 방향으로 진행했습니다.

728x90

'Flutter > 짧은 글' 카테고리의 다른 글

[Flutter, GetX] GetController의 함수를 가져오기  (0) 2022.08.02

+ Recent posts