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