develop/Flutter

[Flutter] Navigator.of(context) .push / .then 화면 전환 보낸 화면에서 데이터 받기

방뎁 2022. 10. 19. 23:19
반응형

데이터를 받으려면 어떻게 할 수 있을까

 두가지 방법이 있다. 

 

1. 넘어 온 값을 받아 setState()로 처리 

onPressed: () async {
  final value = await Navigator.push(
      context, CupertinoPageRoute(builder: (context) => NewPage()));
  setState(() {
     debugPrint(' value ::::::::::: $value');
        // 콜백 함수 처리 
  });
},

 

2. then 으로 콜백 함수 처리 

Navigator.push(
    context,
    CupertinoPageRoute(builder: (context) => NewView()),
).then((value) {
    if (value == 'update') {
        debugPrint(' value ::::::::::: $value');
        // 콜백 함수 처리 
    }
});

 

만약 데이터가 없다면 value는 null 이다. 

 

 

데이터를 이전 화면에 넘기려면 어떤 방법이 있을까.

이것도 두가지 방법이 있다. 사실 한가지 방법인데, ㅎㅎ 

 

pop, 즉 화면을 제거 할 때에는 인자로 전달하여 값을 전달한다. 

아래 두 방법 모두 작동한다. 

Navigator.pop(context, 'update');

 

Navigator.of(context).pop('update');
반응형