프로그래밍 공부 메모/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
  }
}
반응형