반응형
기본 구문
기본 구문으로는 내비게이터를 통해 페이지만 이동되는 기본 구조의 코드입니다.
페이지 연결 구문
내비게이터를 통해 클릭시 특정 페이지(ContentPage)로 이동하는 코드
// 리스트뷰 카드 클릭 이벤트
void cardClickEvent(BuildContext context, int index) {
dynamic content = items[index];
Navigator.push(
context,
MaterialPageRoute(
// 정의한 ContentPage의 폼 호출
builder: (context) => ContentPage(),
),
);
}
연결 페이지 StatefulWidget 구문
class ContentPage extends StatefulWidget {
const ContentPage({super.key});
@override
State<ContentPage> createState() => _ContentState();
}
class _ContentState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return const Placeholder();
// 코드 생략
}
}
생성자로 페이지간 데이터 전달
생성자 생성하는 방법 (StatefulWidget)
- 데이터를 전달 받을 변수 선언
- 데이터타입 변수명(예시 : final String var)
- 생성자 함수 호출
- key
- 위젯 고유의 식별자
- required this.content
- required : 반드시 필요한 매개변수를 의미
- this.varialble : 반드시 필요한 매개변수의 변수명
- super(key)
- 부모 클래스인 StatefulWidget의 생성자를 호출하여 초기화하기 위한 키 확인
- key 매개변수를 전달하여 부모 클래스의 생성자 실행
- key
// 생성자를 통해 값을 초기화할 변수
final dynamic content;
// 생성자 값 초기화
const ContentPage({Key? key, required this.content}) : super(key: key);
생성자의 값을 State 클래스로 넘겨주는 방법 (StatefulWidget > State)
- 키 : 밸류 형식으로 생성자의 값 전달
- State클래스(키 : 밸류)
@override
State<ContentPage> createState() => _ContentState(content: content);
StatefulWidget 전체 코드
class ContentPage extends StatefulWidget {
// 생성자를 통해 값을 초기화할 변수
final dynamic content;
// 생성자 값 초기화
const ContentPage({Key? key, required this.content}) : super(key: key);
// 생성자를 통해 초기화된 값을 State 클래스로 값 전달
@override
State<ContentPage> createState() => _ContentState(content: content);
}
생성자의 값 State 클래스에서 활용하는 방법 (State<>)
- 데이터를 전달 받을 변수 선언
- 데이터타입 변수명(예시 : final String var)
- 생성자 함수 호출
- required this.content
- required : 반드시 필요한 매개변수를 의미
- this.varialble : 반드시 필요한 매개변수의 변수명
- required this.content
class _ContentState extends State<ContentPage> {
// 상태를 상속 받을 페이지에서 생성자의 값을 초기화할 변수 선언
final dynamic content;
// 생성자 값 초기화
_ContentState({required this.content});
// 코드 작성
}
페이지 연결 시 값을 생성자에게 넘겨주는 방법
- 페이지 호출 시 괄호 안에 키 : 밸류 형식으로 입력
- 호출할페이지(키 : 밸류)
// 내비게이터를 통한 페이지 이동
Navigator.push(
context,
MaterialPageRoute(
// 정의한 ContentPage의 폼 호출
// content 키의 content 라는 데이터 전달
builder: (context) => ContentPage(content : content),
),
);
전체 코드
// 리스트뷰 카드 클릭 이벤트, 특정 페이지로 이동
void cardClickEvent(BuildContext context, int index) {
dynamic content = items[index];
Navigator.push(
context,
MaterialPageRoute(
// 정의한 ContentPage의 폼 호출
builder: (context) => ContentPage(content : content),
),
);
}
// 특정 페이지
class ContentPage extends StatefulWidget {
// 생성자를 통해 값을 초기화할 변수
final dynamic content;
// 생성자 값 초기화
const ContentPage({Key? key, required this.content}) : super(key: key);
// 생성자를 통해 초기화된 값을 State 클래스로 값 전달
@override
State<ContentPage> createState() => _ContentState(content: content);
}
// 특정 페이지의 스태이트 클래스
class _ContentState extends State<ContentPage> {
// 상태를 상속 받을 페이지에서 생성자의 값을 초기화할 변수 선언
final dynamic content;
// 생성자 값 초기화
_ContentState({required this.content});
// 코드 작성
}
반응형