DevBoi

[Flutter] 화면 이동간 데이터 전달 본문

[Mobile]/[Flutter]

[Flutter] 화면 이동간 데이터 전달

HiSmith 2023. 7. 15. 15:26
반응형

화면 이동하는 걸 전 포스팅에서 다뤘다.

그러면 이동간 데이터 전달은 어떻게 할까?

우선 해당 위젯에 대한 생성자에 파라미터를 추가해주고 넘기면 된다.

 

1. push , pop의 경우 값을 넘겨주기

단순 값. 전송부

Navigator.of(context).push(
                  MaterialPageRoute(
                    builder: (BuildContext context) => Scene2(),
                    settings: RouteSettings(arguments: '전송한 데이터'),
                  ),
                );

단순 값 수신부

 @override
  Widget build(BuildContext context) {
    final arguments = ModalRoute.of(context)!.settings.arguments;
    print(arguments);

 

객체 전송부

Navigator.of(context).push(
                  MaterialPageRoute(
                    builder: (BuildContext context) => Scene2(),
                    settings: RouteSettings(arguments: Person('id_test','name-smith')),
                  ),
                );

 

객체 수신부

 @override
  Widget build(BuildContext context) {
    Person arguments = ModalRoute.of(context)!.settings.arguments as Person;
    print(arguments.id);
    print(arguments.name);

 

 

라우터 이동시에 데이터 전달

GestureDetector(
              onTap: (){
                Navigator.pushNamed(context, '/second',
                  arguments: Person('gd','smith'),
                );

라우터 이동 시에 데이터 수신

  Person arguments = ModalRoute.of(context)!.settings.arguments as Person;
    print(arguments.id);
    print(arguments.name);

 

여러개 데이터 발,수신

 GestureDetector(
              onTap: (){
                Navigator.pushNamed(context, '/second',
                  arguments: [Person('gd','smith'),Person('gd2','smith2')],

 

@override
  Widget build(BuildContext context) {
    List<Person> arguments = ModalRoute.of(context)!.settings.arguments as List<Person>;
    print(arguments.length);
    print(arguments[0].id);
    print(arguments[1].id);

 

이런식으로 하면 서버를 굳이 여러번 찌르지않아도,

데이터 전달이 화면 간 가능하다.

반응형