프로그래밍/flutter

flutter 에서 page 이동시 argument 전달

인썸니아 2021. 10. 3. 00:49

플러터에서 Navigator를 통해 page를 이동할 때 argument 를 전달하는 기본적인 방법이다.

# push method 의 arguments propery 사용

Navigator.of(context).pushNamed(..)
Navigator.of(context).pushReplacementNamed(..)
Navigator.of(context).pushNamedAndRemoveUntil(..)

위와 같은 Named method 는 arguments 라는 Object? type 의 property 를 가지는데 여기에 전달하고자 하는 데이터를 설정한다.

class TestData {
  var testList = [];
  var index = 0;
}
  ...
{
  TestData testData = TestData();

  ...
    onTap: () {
      testData.testList.add('TEST DATA 1');
      testData.index = index;
      Navigator.of(context).pushNamed('/newPage', arguments: testData);
    },
}


값을 받는 페이지에서는 아래와 같이 ModalRoute 를 통해 가져올 수 있다.

Widget build(BuildContext context) {
  TestData args = ModalRoute.of(context)?.settings.arguments as TestData;
  String data = args.testList[args.index];

 

# class 의 생성자로 전달

Navigator.push(
  context,
  CupertinoPageRoute(
    builder: (context) => EstimateRequestPage(data)
  )
)

위와 같이 class 생성시 parameter 로 전달할 수도 있다.

예전에 플러터 공부한지 얼마 되지 않아 InheritedWidget 를 모르는 상태에서 인테리어 앱 만들때 10개가 넘은 연속된 페이지에서 데이터를 저렇게 죽~~ 전달했었는데, 지금 생각하면 그땐 매우 불편하게 코딩을 했던 것 같다.

반응형