티스토리 뷰

반응형

이번 포스트는 간단한 내용으로 StatelessWidget 와 Stateful 의 Constructor Param을 넣는 방법에 대해서 알아보겠습니다.

 

 

Stateless Widget Param 설정 방법

StatefulWidget으로 선언한 Class 에서 inner class 로 StatelessWidget을 생성할 수 있습니다. class 생성 시점에 맞춰서 param 을 넣고 싶을 때가 많은데요. 그때 어떻게 해야할까요?

생성자 pram에 required 라는 것을 선언함으로써 Param 으로 데이터를 받을 수 있습니다.

참고로 inner class 뿐만 아니라 모든 class에서는 다음과 같이 costructor 에 param 을 넣을 수 있습니다.

class _TopPart extends StatelessWidget {
  final DateTime selectedDate;
  final VoidCallback onPressed;

  _TopPart({required this.selectedDate, required this.onPressed, Key? key})
      : super(key: key);

 

Dart 언어에서는 Constructor param으로 받은 데이터를 class inner local value에 데이터를 넣을 수 있습니다. 예제 소스에 보면 required this.selectedDate 로 해서 param으로 받은 데이터를 바로 사용 하는 것을 확인 할 수 있습니다.

 

 

Stateful Widget Param 설정 방법

StatefulWidget으로 선언한 Class constructor Param 을 넣고 싶을 경우 stateless widget과 다르게 넣어주어야합니다.

먼저는 StatefulWidget에 StatelessWidget과 동일한 방식으로 Class constructor을 설정합니다.

그뒤 State class에서 initState 에서 widget.{변수} 로 state의 초기 값을 설정할 수 있습니다.

class SettingsScreen extends StatefulWidget {
  final double maxNumber;
  const SettingsScreen({required this.maxNumber, Key? key}) : super(key: key);

  @override
  State<SettingsScreen> createState() => _SettingsScreenState();
}

class _SettingsScreenState extends State<SettingsScreen> {
  double maxNumber = 1000;

  @override
  void initState() {
    super.initState();
    // 초창기 build 보다 더 빨리 호출함
    maxNumber = widget.maxNumber; // wiget의 있는 것을 가져옴
  }
}

 

마무리

간단히 class constructor param 넣는 방법에 대해서 알아 봤습니다. 오늘도 즐거운 코딩 되세요 😁

 

반응형
댓글