프로그래밍 공부 메모/flutter
statelees / stateful 일때 다음화면에 데이터 전달하기
jjs815
2022. 6. 16. 19:11
1. statelees 화면으로 데이터 전달
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailScreen(todo: todos[index]),
),
class DetailScreen extends StatelessWidget {
// Todo를 들고 있을 필드를 선언합니다.
final Todo todo;
// 생성자는 Todo를 인자로 받습니다.
DetailScreen({Key key, @required this.todo}) : super(key: key);
@override
Widget build(BuildContext context) {
// UI를 그리기 위해 Todo를 사용합니다.
return Scaffold(
appBar: AppBar(
title: Text(todo.title),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Text(todo.description),
),
);
}
}
2. stateful 화면에 데이터 전달
Stateful 위젯은 두개의 클래스로 구성된다
이전 화면에서 넘겨받은 데이터는 MyRecord 클래스에 있으며
실질적으로 화면에 그려지는 부분은 State<MyRecord >클래스를 상속받은 MyRecordState클래스에서 그려진다
이 처럼 다른 클래스에서 선언된 recordName 변수에 접근하기 위해서 widget속성 (State 위젯에 widget속성이 있다)을 사용한다
즉 widget속성을 사용해서 state객체가 부모 위젯인 MyRecord Statefulwidget이 가지고 있는 모든 데이터에 접근이 가능하게 한다
Navigator.of(context).push(MaterialPageRoute(builder: (context) => MyRecord("WonderWorld")));
class MyRecord extends StatefulWidget {
final String recordName;
const MyRecord(this.recordName);
@override
MyRecordState createState() => MyRecordState();
}
class MyRecordState extends State<MyRecord> {
@override
Widget build(BuildContext context) {
return Text(widget.recordName); // Here you direct access using widget
}
}
반응형