2022. 1. 20. 15:31ㆍFlutter

GetX를 보았을 때 가장 편하다고 느낀 부분이 라우드 관리이다.
기존에 페이지 이동을 위해서는 navigator, MaterialPageRoute, context 등 써야 할 부분이 많았다
context의 쓰임이 나에겐 이해하기 너무 힘들었었다😥
하지만 GetX를 사용하면 context없이 라우트 관리가 가능하다!
라우트 관리를 위해 먼저 MaterialApp을 GetMaterialApp으로 변경한다
GetMaterialApp( // 이전: MaterialApp(
home: MyHome(),
)
📢Navigation
1. 이름없는 라우트 탐색
1.1 Get.to()
ElevatedButton(
child: Text("다음페이지로 이동"),
onPressed: () {
Get.to(() => NextPage());
},
)
Get.to를 통해 새로운 페이지로 이동할 수 있다. 위 코드에서는 NextPage로 이동한다.
1.2 Get.back()
Get.back();
이전 화면으로 돌아간다.
1.3 Get.off()
Get.off(NextPage());
다음 화면으로 이동하면서 이전 화면을 아예 없애버린다. 이전 화면으로 돌아갈 필요가 없을 때 사용한다.
스플래시나 로그인 화면 등을 사용할 때 쓴다.
1.4 Get.offAll()
Get.offAll(NextPage());
Get.off()가 이전 화면 하나를 없앴다면 Get.offAll()은 다음 화면으로 이동하면서 이전의 모든 화면을 없앤다.
장바구니, 투표, 테스트 등에 유용하다.
2. 이름있는 라우트 탐색
2.1 Get.toNamed()
ElevatedButton(
child: Text("이름을 통해 이동"),
onPressed: () {
Get.toNamed("/next");
},
)
return GetMaterialApp(
home: Home(),
initialRoute: "/",
getPages: [
GetPage(name: "/", page: () => Home()),
GetPage(name: "/next", page: () => NextPage()),
]
main.dart에서 아래 코드와 같이 이름과 페이지를 지정해준다.
그러면 Get.toNamed에서 이름을 통해 새 화면으로 이동할 수 있다.
2.2 Get.offNamed()
Get.offNamed("/next");
페이지 이동 후 이전 화면은 지운다.
2.3 Get.offAllNamed()
Get.offAllNamed("/next");
페이지 이동 후 이전 화면 전체를 지운다.
2.4 namedRoutes에서 argument 전달
// 1. String 전달
Get.toNamed("/next", arguments: "전달해줘");
// 2. Map 전달
Get.toNamed("/next2", arguments: {"name":"김땡땡", "age": 20});
String, Map, List, 클래스 인스턴스 등 모든 것을 전달할 수 있다.
// next.dart
Text("${Get.arguments}"),
// next2.dart
Text("${Get.arguments["name"]}은 ${Get.arguments["age"]}살"),
넘겨준 데이터는 위와 같이 사용할 수 있다.
2.5 동적 url 링크
// main.dart
GetPage(name: "/next/:uid", page: () => NextPage()),
GetX는 웹과 같이 향상된 동적 url을 제공한다. main에서 uid를 받을 수 있도록 해준다.
Get.toNamed("/next/1?name=김땡땡&age=20");
url data를 넣어준다. uid와 이름, 나이를 넘겨주도록 해보자.
// next.dart
children: [
Text("${Get.parameters['uid']}"),
Text("${Get.parameters['name']}님은"),
Text("${Get.parameters['age']}살입니다"),
]
넘겨준 값은 위와 같이 사용할 수 있다.
📢SnackBars
context 때문에 복잡했던 snackbar도 get을 통해 간단하게 사용할 수 있다.
Get.snackbar(
"제목",
"내용",
snackPosition: SnackPosition.TOP,
duration: Duration(seconds: 3),
);
속성은 많으니 필요한 속성은 찾아서 사용하자
📢Dialogs
1. default dialog
Get.defaultDialog(
title: "Dialog",
middleText: "Dialog"
onConfirm: () => print("Ok"),
);
기본적인 디자인 및 설정이 된 dialog이다. 얘 또한 속성이 많으니 찾아쓰자
2. dialog
Get.dialog(
//YourDialogWidget
Dialog(
child: Container(
height: 2000,
child: Center(
child: Text('Dialog'),
),
),
),
);
원래 사용하던 dialog위젯을 가져와 사용할 수 있다.
📢BottomSheets
Get.bottomSheet(
Container(
height: 150,
child: Center(
child: Text('BottomSheet'),
),
),
)
showModalBottomSheet와 같지만 context가 필요 없다. 위젯을 넣어주면 해당 위젯을 포함하는 BottomSheet를 보여준다.
확실히 get을 사용하면 코드가 훨씬 깔끔하고 간단해지는 게 보인다😶
'Flutter' 카테고리의 다른 글
#2-2 GetX - 상태관리 : 반응형 상태 관리 (0) | 2022.01.21 |
---|---|
#2-1 GetX - 상태관리 : 단순 상태 관리 (0) | 2022.01.20 |
#0 Getx는 무엇인가? (0) | 2022.01.20 |
안드로이드 에뮬레이터 스킨 없애기 (0) | 2022.01.19 |
파라미터에 (_)는 왜 사용하는 걸까 (0) | 2022.01.18 |