์๋ ํ์ธ์.
์๋ฆฌ์ฐ์ค B ์ ๋๋ค.
Courses
Reviews
- Building Flutter apps based on GetX
- Building Flutter apps based on GetX
Posts
Q&A
model, viewmodel
hellohallo๋ ์๋ ํ์ธ์.Sirius B์ ๋๋ค.๋ฌธ์ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋ง์ํ์ model, view, viewmodel์ ํ์ฌ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋งคํํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.modeldto ํด๋ : ๋ฐ์ดํฐ ๊ฐ์ฒดdao ํด๋ : ์๋ฒ ํต์ ๋ฐ ๋ด๋ถ DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ ์ก์์ viewview ํด๋ : ํ๋ฉด ๋ ์ด์์viewmodelcontroller ํด๋ : ๋น์ฆ๋์ค ๋ก์ง (ํ๋ฉด ๋ฐ ๋ฐ์ดํฐ ๊ฐฑ์ ๋ฑ์ ์ญํ )์ฐธ๊ณ ๋ก ์์ ํ๋ฆ ๋ฐ ์ฃผ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. view โ controller โ dao (dto)ํ๋ฉด ํ์ โ ํ๋ฉด ๋ฐ ๋ฐ์ดํฐ ๊ฐฑ์ โ ๋ฐ์ดํฐ ์ก์์ ์ถ๊ฐ ์ง๋ฌธ ์์ผ์๋ฉด ๋ค์ ๋ฌธ์ ๋จ๊ฒจ์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค :)
- 0
- 1
- 133
Q&A
material theme
์ค์ ๋ ์๋ ํ์ธ์.๊ฐ์ ์์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ๋ฐ์๋์ด์์ง ์์ ํผ๋์ ๋๋ ค ์ฃ์กํด์!๋ง์ํ์ material theme ๊ตฌ์ฑ์ ์ํ ์ฌ์ดํธ์ ๋ณ๊ฒฝ๋ ์ฃผ์์ ๋๋ค.https://material-foundation.github.io/material-theme-builder/ ๋ค์ด๋ก๋ ๋ฉ๋ด ์์น๋ ์๋จ ์ค๋ฅธ์ชฝ์ ์๋ ํ๋ฌ์ค ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋์ค๋ ๋ ์ด์ด์ ํ๋จ์ Export ๋ฒํผ์ ์ด์ฉํด์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค ๐
- 0
- 1
- 175
Q&A
PageTransition ์ ์ฉ ํ ๋ทฐ ์ ์ฉ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์ Gavin๋,์๋ฆฌ์ฐ์ค B์ ๋๋ค. ์ ์ ๊ฐ์๋ฅผ ์๊ฐํด ์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!์์ฑํด์ฃผ์ ์ฝ๋์ ์คํ๊ฐ ํ๋ ์์ด์ ์๋๋ ๊ฒ ๊ฐ์ต๋๋ค.FadeThroughTransition ์ animation: secondAnim ๋ถ๋ถ์ animation: anim ์ผ๋ก ๊ณ ์น๋ฉด ์ ์์ ์ผ๋ก ํ๋ฉด ์ ํ์ด ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.์์ฑํด์ฃผ์ ์ฝ๋์ ํด๋น ๋ถ๋ถ์ด secondaryAnimation ํญ๋ชฉ๊ณผ ๊ฐ์์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ์ผ๋ก ๋ณด์ฌ์.ํ๋ฒ ํด๋ณด์๊ณ ๊ทธ๋๋ ์ ๋๋ฉด, ๋ค์ ํ๋ฒ ๋ฌธ์ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.๊ฐ์ฌํฉ๋๋ค! [๋ฐ์๋ ์ฝ๋]return Scaffold( appBar: AppBar( title: Obx(() => Text(controller.title.value)), ), body: SafeArea( child: PageTransitionSwitcher( transitionBuilder: (Widget child, Animation anim, Animation secondAnim) { return FadeThroughTransition( animation: anim, secondaryAnimation: secondAnim, child: child, ); }, child: Obx(() => RouteInfo.navBarPages[controller.navBarIdx.value])), ), bottomNavigationBar: Obx(() => NavigationBar( selectedIndex: controller.navBarIdx.value, onDestinationSelected: controller.onChangeNavBar, destinations: [ NavigationDestination( icon: const Icon(Icons.home_filled), label: 'navBar.home'.tr, ), NavigationDestination( icon: const Icon(Icons.list_alt), label: 'navBar.post'.tr, ), NavigationDestination( icon: const Icon(Icons.photo), label: 'navBar.photo'.tr, ), ], )), );
- 0
- 1
- 163
Q&A
๊ฐ์์๋ฃ๋ ์ด๋์ ๋ค์ด ๋ฐ๋์?
์๋ ํ์ธ์ Kane Kim ๋,์ฃ์กํ์ง๋ง ๋ฐฐํฌ์ฉ์ผ๋ก ๋ง๋ ์๋ฃ๊ฐ ์๋์ด์ ์ ๋ฆฌ๊ฐ ๋์ง ์์ ๋๋ฆฌ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.์ํด ๋ถํ๋๋ฆฝ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 350
Q&A
๊ฐ์์๋ฃ๋ ์ด๋์ ๋ค์ด ๋ฐ๋์?
์๋ ํ์ธ์! Kane Kim ๋,์์ฝ๊ฒ๋ PPT๋ก ๋ณด์ด๋ ๋ด์ฉ์ ์์์ ์ ์ํ๊ธฐ ์ํด ์์๋ก ๋ง๋ ์๋ฃ์ ๋๋ค.๊ฐ์์์ ์ ๊ณต๋๋ ์๋ฃ๋ ์์ค์ฝ๋ ์๋ฃ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 350
Q&A
route์ pages
์ ์ ๊ฐ ์ง๋ฌธ์ ์๋ชป ์ดํดํ๋ค์ ใ ใ ํ๋ฉด์ ์ด๋ํ ๋, ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ ๋ํ ์ง๋ฌธ์ด์ฃ ?์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค :)// arguments ์ ์ํ๋ ํํ๋ก ๊ฐ์ ๋ด์์ ์ฌ์ฉ (bool, int, String, list ...) Get.toNamed(RouteInfo.routeRoot, arguments: 'Return data'); // ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ณณ์์ ์๋์ ๊ฐ์ด ํธ์ถํ์ฌ ์ฌ์ฉ print(Get.arguments);์ํ๋ ๋ต๋ณ์ด ๋ง๋์ง ํ์ธ ๋ถํ ๋๋ ค์!๊ฐ์ฌํฉ๋๋ค.
- 0
- 3
- 510
Q&A
route์ pages
์๋ ํ์ธ์!์ฐ์ ํ์ฌ ๊ฐ์์์ ๋ง๋๋ ์ํ ์ฑ์์๋ MainView ๊ฐ ์ต์๋จ Root ํ๋ฉด์ ํด๋นํ๊ณ ์ฌ๊ธฐ์ ๋ค๋น๊ฒ์ด์ ๋ฐ๋ฅผ ์ค์ ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด์ด์PostDetailView ๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๋ฉด์ด MainView ์ ํด๋นํฉ๋๋ค.Home, Post, Photo ํ๋ฉด์ MainView ์์์ ๋ค๋น๊ฒ์ด์ ๋ฐ๋ฅผ ํตํด ์ ํ๋๋ ํ๋ฉด์ด์์.๊ทธ๋์ PostDetailView ์์ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด MainView ํ๋ฉด์ด ๊ทธ๋๋ก ๋์ค๊ฒ ๋ผ์.๋ง์ฝ, ๋ช ์์ ์ผ๋ก ํธ์ถํ์ฌ MainView ๋ก ์ด๋ํ๋ ๊ฒ์ ํ ์คํธํด๋ณด๊ณ ์ถ๋ค๋ฉด,PostDetailView ์ ๋ฒํผ์ ํ๋ ์์ฑํ๊ณ ์๋์ ๊ฐ์ด ์ ๋ ฅํ์ฌ ํ ์คํธํด ๋ณด์ธ์ :)ElevatedButton( child: Text('MainView ์ด๋ ํ ์คํธ'), onPressed: () { Get.toNamed(RouteInfo.routeRoot); } )์ด๋ฌํ ๋ค๋น๊ฒ์ด์ ๋ฐ ๊ตฌ์กฐ๊ฐ ์๋ ์ผ๋ฐ์ ์ธ ํ๋ฉด ์ด๋์ ์ํ ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค.Get.toNamed(RouteInfo.routeRoot);์์ ๊ฐ์ด Get.toNamed ์ Route๋ช ์ ๋ฃ์ด์ค์ ์ํ๋ ํ๋ฉด์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค.๊ด๋ จ๋ ๊ฐ์ ๋ด์ฉ์ ๋๋ค.์น์ 4. GetX ๊ธฐ๋ฐ ์ฑ ๋ง๋ค๊ธฐ - [ํฌ์คํธ ๋ณด๊ธฐ ํ๋ฉด ๋ง๋ค๊ธฐ]5:15 ๋ถ๋ถ๋ถํฐ ํ๋ฒ ์ดํด๋ณด์ธ์ :)ํธ์ถํ๋ ๋ถ๋ถ์ 15:37 ๋ถ๋ถ์ ์์ต๋๋ค.ํน์, ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ์ถฉ๋ถํ์ง ๋ชปํ๋ฉด ๋ค์ ํ๋ฒ ๋ฌธ์ํด ์ฃผ์ธ์ :)๊ฐ์ฌํฉ๋๋ค.
- 0
- 3
- 510
Q&A
onChangeNavBar ์ง๋ฌธ
์๋ ํ์ธ์!onDestinationSelected: controller.onChangeNavBar ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ด์ ์์ฑํด๋ณผ๊ฒ์ :)์ง๊ด์ ์ธ ํํonDestinationSelected: (int idx) { controller.onChangeNavBar(idx);}์๋ ํํ๋ ์์ ๊ฐ์ต๋๋ค.onDestinationSelected ์๋ int ๊ฐ์ ๋ํ ํ๋ผ๋ฏธํฐ๊ฐ 1๊ฐ ์กด์ฌํด์.(int idx) {} ๋ถ๋ถ์ด Function ์ด๊ธฐ ๋๋ฌธ์, ๊ฐ์ ํํ์ Function ์ธ onChangeNavBar(idx) ๋ฅผ ๋ง์น ๋ณ์์ฒ๋ผ onChangeNavBar ๋ก ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๊ฐ ๊ทธ๋๋ก ๋์ ๋์ด ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.๊ฐ๋จํ ํํonDestinationSelected: controller.onChangeNavBar๊ทธ๋์ 1๋ฒ๊ณผ 2๋ฒ์ ์์ ํ ๋์ผํ๊ฒ ์๋ํ ์ ์์ด์.๋ง์ฐฌ๊ฐ์ง๋ก ๋ ๋ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋๋ ๊ฐ์ ์๋ฆฌ๋ก ์ฌ์ฉํ ์ ์์ด์.์๋ ์ถ๊ฐ ์์์์๋ ExamWidget ์ ํํํ 2๊ฐ์ง ๋ฐฉ์ ๋ชจ๋ ์์ ํ ๋์ผํ๊ฒ ์คํ๋๊ฒ ๋ฉ๋๋ค.์ถ๊ฐ ์์void onExam(int p1, bool p2, String p3) { print('$p1, $p2, $p3');}ExamWidget( onExamEvent: onExam)// ๋๋ExamWidget( onExamEvent: (int p1, bool p2, String p3) { onExam(p1, p2, p3); })๋ ๋ค๋ฅธ ์ง๋ฌธ์ด ์์ผ๋ฉด ๋ค์ ๋จ๊ฒจ์ฃผ์ธ์ ๐๊ฐ์ฌํฉ๋๋ค!
- 0
- 1
- 256
Q&A
๋ผ์ฐํธ ๋ช ์ ์ด๋ป๊ฒ ์ง์ ํ๋์?
์๋ ํ์ธ์!๋จผ์ ์์ค ์ฝ๋์์์ ๋ผ์ฐํธ๋ช ์ง์ ์ route_info.dart ํ์ผ์์ ํ ์ ์์ต๋๋ค :)๋ผ์ฐํธ๋ช ์ง์ ์ ๋ํด์๋ '์น์ 3. GetX ์ ์ฉ ์ด๋ ต์ง ์์์' ์ 'Route' ๊ฐ์์์ ์ค์ ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.๋ํ, '์น์ 4. GetX ๊ธฐ๋ฐ ์ฑ ๋ง๋ค๊ธฐ' ์ '์ฑ ๊ฐ๋ฐ์ ์ํ ๋ ์ด์ด ๋๋๊ธฐ' 6๋ถ 20์ด ์์น๋ถํฐ ํด๋น ๋ด์ฉ์ ๋ํ ์ฝ๋ฉ์ ๊ฐ์ด ์งํํ ์ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค!
- 0
- 1
- 330





