이번 포스트는 간단한 내용으로 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 넣는 방법에 대해서 알아 봤습니다. 오늘도 즐거운 코딩 되세요 😁