본문 바로가기
프레임워크/flutter

[개념]한숨 쉬며 되돌아보기

by seongjko 2024. 1. 1.
728x90

그 동안 너무 노마드코더 강의 따라가는 데만 집중한 나머지 

제대로 복습을 해 본 적이 없었다.

내 눈에는 매우 익숙하지만 아직도 개념이 모호한 것들을 정리하는 시간을 

가지려 한다.

 

1. Mediaquery

- 화면 크기 등 현재 프로그램이 돌아가고 있는 디바이스에 대한 정보를 제공하는 클래스.

 

2. context

class MyWidget extends StatelessWidget {
  const MyWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

 

위와 같이 statelessWidget을 처음 만들면 맨 위의 생성자와 함께 build 메서드가 생긴다. build 메서드는 인자로 BuildContext형의 context를 받고 Widget을 리턴한다. build 메서드는 대충 화면을 그려주는 역할을 한다고 알고 있고, 화면을 그려주는 역할을 하니까 당연히 Widget을 리턴한다는 것까지는 알고 있다. 그런데 인자로 받는 context의 정체는 무엇일까? 플러터 공식 문서의 설명은 이러하다.

 

The given [BuildContext] contains information about the location in the tree at which this widget is being built.

 

int 타입이 정수 데이터를 저장하고, String 타입이 문자열 데이터를 저장하듯, BuildContext 타입은 위젯 트리 상에서 현재 위젯의 위치 데이터를 저장한다. 어떤 블로그에서는 부모 위젯에 대한 현재 위젯의 위치 정보라던데 그게 맞는지는 잘 모르겠으니 이 글의 맨 아래 참고 항목의 링크를 타고 들어가 직접 확인하길 바란다.

 

요약:

context는 현재 위젯의 위젯 트리 상 위치를 담는 역할을 한다.

 

3. Fat arrow syntax

별것도 아닌 건데 자꾸 헷갈렸다.

int add(int a, int b) {
	return (a + b);
}

 

이 함수는 a랑 b를 받아서 그 합을 리턴하는 단순한 코드다.

그런데 별것도 아닌 코드인데 세 줄씩이나 잡아먹는다.

이게 못마땅하면 아래와 같이 Fat arrow를 사용해서 한 줄로 줄일 수 있는 것이다. 

int add(int a, int b) => a + b;

 

 

4. builder

 

 void _onSubmit() {
    if (!_isPasswordValid()) return;
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => const BirthdayScreen(),
      ),
    );
  }

 

제일 이해가 안 됐던 것 중에 하나가 builder다.

https://stackoverflow.com/questions/52088889/can-someone-explain-to-me-what-the-builder-class-does-in-flutter

 

Can someone explain to me what the Builder Class does in Flutter?

The documentation is very confusing and vague. Here is what it states: Builder class A platonic widget that calls a closure to obtain its child widget. Here are my questions: What do they mea...

stackoverflow.com

 

 

 

 

 

 

참고:

https://velog.io/@su96in43/%ED%94%8C%EB%9F%AC%ED%84%B0Flutter-Build%EC%99%80-%EB%8B%A4%EC%96%91%ED%95%9C-BuildWidget-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

플러터(Flutter)-Build와 다양한 BuildWidget 알아보기

플러터입니다.

velog.io

 

반응형