(Dart) 콜백에 대한 고찰…

1 분 소요

Dart 에서 콜백이란

개념

  • 말 그대로 call(부르고,) back(어떤 처리된 값을 가지고 함수로 다시 돌아오는 개념)
  • 작업단위별로 class가 나누어진 상태에서 부모위젯이 자식 위젯콜하여 처리한 데이터를 상위 위젯으로 데이터를 다시 넘겨줘야할때 사용.
  • 자식위젯 클래스를 부를때 인자값으로 필요한 데이터와 Function타입을 보내준다.

콜백을 사용해야 하는 이유.

  1. 하위 위젯의 인자값을 부모 위젯에서 사용해야 할때(Lifting State Up) : 부모 위젯이 statefull 위젯인 상태에서 상태값이 바뀌는지 확인하여 실시간 데이터를 적용해야 할때 사용하는데, 자식위젯이 stateless위젯인 경우 setState를 할수 없어, 함수자체를 보내 하위젯에서 필요한 값을 받아 오고 setState를 부모쪽에서 사용하게 한다.
  2. 유지보수의 편의성 고려 : 그냥 전체 화면을 statefull위젯으로 하나의 클래스로 관리해서 필요한 값을 전역변수로 선언 해서 setState함수로 값을 업데이트 하여 화면에 적용할 수도 있다. 이 방법을 사용하면 콜백을 전혀 생각 할 필요가 없다. 하지만, 서비스가 방대해질 경우 작업단위 별로 쪼개 놓지않고 작업하였다면 유지보수가 겁나게 힘들게 될것이다.
  3. 재빌드에 대한 비용 절약 : statefull 위젯에서 setState를 한다는 것은 상태값을 바뀔 떄만다 해당 위젯클래스 전체가 재빌드 된다는 것을 알고 있는가? 이는 실제 메모리가 필요하기 떄문에 훨씬 더 복잡하다. 이 비용을 줄이기 위해 고정적인 부분을 stateless 자식위젯으로 분리하여 콜백을 사용하여 상태값을 관리 하면 재빌드 하는데 있어서 비용을 크게 줄일수 있을 것이다.

나의 생각

  • 그냥 다 하나에 때려 박아서 해도 되는데 왜? 궂이 콜백을 사용하려 하는 걸까? 잘난척 하기위해 하려는 건가…? 오만가지 생각이 다들어서 너무 답답했다. 하지만 분명 다른 이유가 있을 것이라고 생각하고 그 이유를 찾기위해 콜백을 쓰는 이유에 대해 미친듯이 찾아 해맷다… 하지만 인터넷에서 나오는 대부분의 내용들…
    A, B, function(A+B) 같은 이런 사용법만 알려주고 그냥 앞에꺼 데이터를 먼저 받은 다음 함수 콜백으로 사용한다는 개념만… 장난하나… 저걸 보면서 느낀 내 느낌은 그냥 함수 A, B값을 인자로 받는 함수 내에서 그냥 A+B를 인자값으로 넘겨주는 함수를 그냥 호출하지 궂이 왜 콜백이냐고!!!!! 누가 콜백에 대해서 모르냐… 정말 답답했다… 그래서 혼자 계속 생각하고 또 생각하고 해서 겨우 나만의 정의를 내렸다.. 물론 틀릴 수 도 있다.. 답답했다능…

댓글남기기