PageMove

tpids·2024년 9월 19일

Flutter

목록 보기
26/40

firstPage.dart

import 'package:flutter/material.dart';
import 'package:flutter_pagemove/secondPage.dart';
import 'package:flutter_pagemove/thirdPage.dart';

class ExFirstPage extends StatelessWidget {
  const ExFirstPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("첫번째 페이지"),),
      body: Container(
        width: double.infinity,
        height: double.infinity,
        color: Colors.red[200],
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("첫번째 페이지 입니다.", style: TextStyle(fontSize: 32),),
            ElevatedButton(onPressed: (){
              // 화면이동 코드
              // Navigator : 페이지 이동을 위한 클래스
              // .push : 페이지 관리를 위한 Stack 사용
              // context : 현재 내가 보고 있는 페이지
              // MaterialPageRoute : 어떤 페이지로 이동할 지 return
              Navigator.push(context, MaterialPageRoute(builder: (context) {
                return ExSecondPage();
              }));
            }, child: Text("두번째 페이지로 이동")),
            ElevatedButton(onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (context) {
                return ExThirdPage();
              }));
             }, child: Text("세번째 페이지로 이동")),

          ],
        ),
      ),
    );
  }
}

secondPage.dart

import 'package:flutter/material.dart';
import 'package:flutter_pagemove/firstPage.dart';
import 'package:flutter_pagemove/thirdPage.dart';

class ExSecondPage extends StatelessWidget {
  const ExSecondPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("두번째 페이지"),),
      body: Container(
        width: double.infinity,
        height: double.infinity,
        color: Colors.blue[200],
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("두번째 페이지 입니다.", style: TextStyle(fontSize: 32),),
            ElevatedButton(onPressed: (){
              // 페이지 이동 코드 (수정 버전, 축약)
              // MaterialPageRoute
              // builder 가 매개변수가 context인 경우 (_) 로 축약 가능
              // 람다식 : 실행코드가 한줄인 경우 => 를 사용하여 return 가능
              // Navigator.push(context, MaterialPageRoute(builder: (_) => ExFirstPage()));

              // .pop
              // Navigator.pop(context);

              // replacement - 대체
              // Navigator.pushReplacement(context, MaterialPageRoute(builder: (_)=>ExFirstPage()));

              // removeUntil - 삭제
              Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (_)=>ExFirstPage()), (route)=>false);

             }, child: Text("첫번째 페이지로 이동")),
            ElevatedButton(onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (context) {
                return ExThirdPage();
              }));
             }, child: Text("세번째 페이지로 이동")),


          ],
        ),
      ),
    );
  }
}

thirdPage.dart

import 'package:flutter/material.dart';
import 'package:flutter_pagemove/firstPage.dart';
import 'package:flutter_pagemove/secondPage.dart';

class ExThirdPage extends StatelessWidget {
  const ExThirdPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("세번째 페이지"),),
      body: Container(
        width: double.infinity,
        height: double.infinity,
        color: Colors.green[200],
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("세번째 페이지 입니다.", style: TextStyle(fontSize: 32),),
            ElevatedButton(onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (_) => ExFirstPage()));
             }, child: Text("첫번째 페이지로 이동")),
            ElevatedButton(onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (_) => ExSecondPage()));
             }, child: Text("두번째 페이지로 이동")),
          ],
        ),
      ),
    );
  }
}

FirstPage

SecondPage

ThirdPage

profile
개발자

0개의 댓글