Flutter Navigation

이영준·2023년 5월 16일
0

화면 이동

        onPressed: () async {
          final result = await Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => SecondPage()),
          );
          
          print(result);
          
// 이동된 다른 페이지에서 pop 할 때 result 전달       
Navigator.pop(context, 'Save OK');

다른 페이지로 이동하는 이벤트 처리이다.
Navigator.push로 내 context와 route(MaterialPageRoute)를 담아서 보낸다.

startActivityForResult 처럼 이동한 페이지로부터 값을 받아오기 위해 async, await 방식으로 결과값을 기다린다.

값을 담아 보내기

          final result = await Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => SecondPage2(person: person)),
          );

값을 받을 페이지에서 생성자로 person을 받도록 하면

class SecondPage2 extends StatelessWidget {
  final Person2 person;

  SecondPage2({Key? key, required this.person}) : super(key: key);

이를 받는 페이지에서는 required로 값을 확정적으로 받도록 하였다.

이름으로 원하는 페이지 이동 (PushNamed)

Navigator.pushNamed(context, '/second');

Navigator.pushNamed는 /second라는 라우트 이름을 가지는 화면으로 이동하도록 하는 것이다.

이 라우트들은 routes라는 app 속성에서 정의해준다.

  
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      routes: {
        '/first': (context) => FirstPage(),
        '/second': (context) => SecondStatefulPage(),
      },
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MenuPage(),
    );
  }
}
profile
컴퓨터와 교육 그사이 어딘가

0개의 댓글