GetX에서의 페이지 이동을 Navigator와 비교하여 확인해보겠습니다.
Navigator
Navigator.of(context).push(MaterialPageRoute(
builder:(_) => FirstPage(),
));
GetX
Get.to(FirstPage());
Navigator
Navigator.of(context).pop();
GetX
Get.back();
Navigator
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
builder:(_) => Home())),
(route) => false);
GetX
Get.offAll(Home());
기존 main.dart와 Navigator
//main.dart
initalRoue: "/",
routes:{
"/": (context) => Home(),
"/first": (context) => FirstNamedPage(),
"/second": (context) => SecondNamedPage()
}
GetX main.dart
//main.dart => routes대신 getPages 이용
GetMaterialApp(
getPages:[
GetPage(name:"/", page : () => Home(),transition: Transition.fadeIn),
GetPage(name:"/first", page : () => FirstNamedPage()),
GetPage(name:"/second", page : () => SecondNamedPage()),
]
);
Navigator
Navigator.of(context).pushNamed("/first");
GetX
Get.toNamed("/first");
위와 동일!
Navigator
Navigator.of(context).pushNamedAndRemoveUntil("/first");
GetX
Get.offNamed("/first");
Get.to(FirstPage(),
arguments: {'name' :'example', 'age': 20});
//FirstPage 이동 후 전달 받은 arguments 사용하기
Text("이름은 ${Get.arguments['name']}")
Text("나이는 ${Get.arguments['age']}")
class User{
String name;
int age;
User({this.name,this.age})
}
~
~
Get.to(FirstPage(),
arguments: User(name:"myname",age:10));
//FirstPage 이동 후 전달 받은 arguments 사용하기
Text("이름은 ${(Get.arguments as User).name}")
Text("나이는 ${(Get.arguments as User).age}")
//main.dart의 getPages
GetPage(
name:"/user/:uid"
page: () => UserPage()
)
~
~
Get.toNamed("/user/23421?name=mia&age=10");
//UserPage에서 parameter 사용하기
Text("${(Get.parameter['uid']}")
Text("${(Get.parameter['name']}님 안녕하세요")
Text("${(Get.parameter['age']}세 입니다")
=> 출력 결과
23421
mia님 안녕하세요
10세 입니다