플러터에서 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개가 넘은 연속된 페이지에서 데이터를 저렇게 죽~~ 전달했었는데, 지금 생각하면 그땐 매우 불편하게 코딩을 했던 것 같다.
반응형
'프로그래밍 > flutter' 카테고리의 다른 글
android simulator 에서 dart process stop 불가 현상 (0) | 2021.10.12 |
---|---|
android studio project window color 의미 (0) | 2021.10.11 |
'Device File Explorer' missing on Android Studio (0) | 2021.09.26 |
FixedExtentScrollController 사용시 오류 처리. (0) | 2021.09.25 |
TextField 내부 padding 제거 (0) | 2021.09.12 |