Committed by
GitHub
Merge pull request #1664 from rws08/translate-ko
Update README.ko-kr.md
Showing
1 changed file
with
143 additions
and
11 deletions
1 |  | 1 |  |
2 | 2 | ||
3 | -**언어: [영어](README.md), [베트남어](README-vi.md), [인도네시아어](README.id-ID.md), [우르두어](README.ur-PK.md), [중국어](README.zh-cn.md), [브라질 포르투칼어](README.pt-br.md), [스페인어](README-es.md), [러시아어](README.ru.md), [폴란드어](README.pl.md), 한국어(이파일), [프랑스어](README-fr.md)** | ||
4 | - | ||
5 | [](https://pub.dev/packages/get) | 3 | [](https://pub.dev/packages/get) |
6 | [](https://pub.dev/packages/get/score) | 4 | [](https://pub.dev/packages/get/score) |
7 |  | 5 |  |
@@ -16,6 +14,26 @@ | @@ -16,6 +14,26 @@ | ||
16 | 14 | ||
17 |  | 15 |  |
18 | 16 | ||
17 | + | ||
18 | +<div align="center"> | ||
19 | + | ||
20 | +**Languages:** | ||
21 | + | ||
22 | + | ||
23 | +[](README.md) | ||
24 | +[](README-vi.md) | ||
25 | +[](README.id-ID.md) | ||
26 | +[](README.ur-PK.md) | ||
27 | +[](README.zh-cn.md) | ||
28 | +[](README.pt-br.md) | ||
29 | +[](README-es.md) | ||
30 | +[](README.ru.md) | ||
31 | +[](README.pl.md) | ||
32 | +[](README.ko-kr.md) | ||
33 | +[](README-fr.md) | ||
34 | + | ||
35 | +</div> | ||
36 | + | ||
19 | - [Get에 대하여](#get에-대하여) | 37 | - [Get에 대하여](#get에-대하여) |
20 | - [설치](#설치) | 38 | - [설치](#설치) |
21 | - [GetX를 사용한 Counter 앱](#getx를-사용한-counter-앱) | 39 | - [GetX를 사용한 Counter 앱](#getx를-사용한-counter-앱) |
@@ -53,6 +71,8 @@ | @@ -53,6 +71,8 @@ | ||
53 | - [ObxValue](#obxvalue) | 71 | - [ObxValue](#obxvalue) |
54 | - [유용한 팁](#유용한-팁) | 72 | - [유용한 팁](#유용한-팁) |
55 | - [GetView](#getview) | 73 | - [GetView](#getview) |
74 | + - [GetResponsiveView](#getresponsiveview) | ||
75 | + - [사용 방법](#사용-방법) | ||
56 | - [GetWidget](#getwidget) | 76 | - [GetWidget](#getwidget) |
57 | - [GetxService](#getxservice) | 77 | - [GetxService](#getxservice) |
58 | - [2.0의 주요 변경점](#20의-주요-변경점) | 78 | - [2.0의 주요 변경점](#20의-주요-변경점) |
@@ -71,9 +91,11 @@ | @@ -71,9 +91,11 @@ | ||
71 | - **성능:** GetX는 성능과 최소한의 리소스 소비에 중점을 둡니다. GetX는 Streams나 ChangeNotifier를 사용하지 않습니다. | 91 | - **성능:** GetX는 성능과 최소한의 리소스 소비에 중점을 둡니다. GetX는 Streams나 ChangeNotifier를 사용하지 않습니다. |
72 | 92 | ||
73 | - **생산성:** GetX는 쉽고 친숙한 구문을 사용합니다. 원하시는 것보다 Getx에는 항상 더 쉬운 방법이 있습니다. 개발 시간을 아끼고 애플리케이션을 최대 성능으로 제공할 수 있습니다. | 93 | - **생산성:** GetX는 쉽고 친숙한 구문을 사용합니다. 원하시는 것보다 Getx에는 항상 더 쉬운 방법이 있습니다. 개발 시간을 아끼고 애플리케이션을 최대 성능으로 제공할 수 있습니다. |
94 | + | ||
74 | 일반적으로 개발자는 메모리에서 컨트롤러들을 제거하는 데 관심을 가져야합니다. GetX에서는 리소스가 기본적으로 사용되지 않으면 메모리에서 제거되므로 필요하지 않습니다. 만약 메모리에 유지하려면 종속성에서 "permanent : true"를 명시적으로 선언해야합니다. 이렇게하면 시간을 절약 할 수있을뿐만 아니라 불필요한 메모리 종속성이 발생할 위험이 줄어 듭니다. 종속성은 기본적으로 lazy로 로드됩니다. | 95 | 일반적으로 개발자는 메모리에서 컨트롤러들을 제거하는 데 관심을 가져야합니다. GetX에서는 리소스가 기본적으로 사용되지 않으면 메모리에서 제거되므로 필요하지 않습니다. 만약 메모리에 유지하려면 종속성에서 "permanent : true"를 명시적으로 선언해야합니다. 이렇게하면 시간을 절약 할 수있을뿐만 아니라 불필요한 메모리 종속성이 발생할 위험이 줄어 듭니다. 종속성은 기본적으로 lazy로 로드됩니다. |
75 | 96 | ||
76 | - **조직화:** GetX는 화면, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입 및 네비게이션을 완전히 분리 할 수 있습니다. 라우트간 전환을 하는데에 컨텍스트가 필요하지 않아 위젯 트리(시각객체)에 독립적입니다. inheritedWidget을 통해 컨트롤러/블록에 접근하는 데 컨텍스트가 필요하지 않아 시각화 계층에서 프레젠테이션 로직과 비즈니스 로직을 완전히 분리됩니다. 이 GetX는 자체 종속성 주입 기능을 사용하여 DI를 뷰에서 완전히 분리하기 때문에 다중 Provider를 통해 위젯 트리에서 컨트롤러/모델/블록으로 주입 할 필요가 없습니다. | 97 | - **조직화:** GetX는 화면, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입 및 네비게이션을 완전히 분리 할 수 있습니다. 라우트간 전환을 하는데에 컨텍스트가 필요하지 않아 위젯 트리(시각객체)에 독립적입니다. inheritedWidget을 통해 컨트롤러/블록에 접근하는 데 컨텍스트가 필요하지 않아 시각화 계층에서 프레젠테이션 로직과 비즈니스 로직을 완전히 분리됩니다. 이 GetX는 자체 종속성 주입 기능을 사용하여 DI를 뷰에서 완전히 분리하기 때문에 다중 Provider를 통해 위젯 트리에서 컨트롤러/모델/블록으로 주입 할 필요가 없습니다. |
98 | + | ||
77 | GetX를 사용하면 기본적으로 클린 코드를 가지게 되어 애플리케이션의 각 기능을 쉽게 찾을 수있습니다. 이것은 유지 보수를 용이하게 하며 모듈의 공유가 가능하고 Flutter에서는 생각할 수 없었던 것들도 전부 가능합니다. | 99 | GetX를 사용하면 기본적으로 클린 코드를 가지게 되어 애플리케이션의 각 기능을 쉽게 찾을 수있습니다. 이것은 유지 보수를 용이하게 하며 모듈의 공유가 가능하고 Flutter에서는 생각할 수 없었던 것들도 전부 가능합니다. |
78 | BLoC은 Flutter에서 코드를 구성하기 위한 시작점으로 비즈니스 로직과 시각객체를 분리합니다. Getx는 비즈니스 로직 뿐만 아니라 프레젠테이션 로직을 분리하는 자연스러운 진화입니다. 추가로 종속성 주입과 라우트 또한 분리되고 데이터 계층이 모두로부터 분리됩니다. Hello World를 구현하는 것보다 더 쉽게 모든 것이 어디 있는지 알수 있습니다. | 100 | BLoC은 Flutter에서 코드를 구성하기 위한 시작점으로 비즈니스 로직과 시각객체를 분리합니다. Getx는 비즈니스 로직 뿐만 아니라 프레젠테이션 로직을 분리하는 자연스러운 진화입니다. 추가로 종속성 주입과 라우트 또한 분리되고 데이터 계층이 모두로부터 분리됩니다. Hello World를 구현하는 것보다 더 쉽게 모든 것이 어디 있는지 알수 있습니다. |
79 | Flutter SDK와 함께 GetX를 사용하면 가장 쉽고 실용적이며 확장 가능한 고성능 어플리케이션을 만들수 있습니다. 초보자에게는 쉬우며 전문가에게는 정확하고 완벽하게 동작하는 대규모 생태계가 함께합니다. 안전하고 안정적이며 업데이트되고 기본 Flutter SDK에 없는 광범위한 API 빌드를 제공합니다. | 101 | Flutter SDK와 함께 GetX를 사용하면 가장 쉽고 실용적이며 확장 가능한 고성능 어플리케이션을 만들수 있습니다. 초보자에게는 쉬우며 전문가에게는 정확하고 완벽하게 동작하는 대규모 생태계가 함께합니다. 안전하고 안정적이며 업데이트되고 기본 Flutter SDK에 없는 광범위한 API 빌드를 제공합니다. |
@@ -85,7 +107,8 @@ | @@ -85,7 +107,8 @@ | ||
85 | 107 | ||
86 | **추가로 [Get CLI](https://github.com/jonataslaw/get_cli)를 프런트엔드와 서버 양쪽에서 사용하면 전체 개발 프로세스를 자동화 할 수 있습니다.** | 108 | **추가로 [Get CLI](https://github.com/jonataslaw/get_cli)를 프런트엔드와 서버 양쪽에서 사용하면 전체 개발 프로세스를 자동화 할 수 있습니다.** |
87 | 109 | ||
88 | -**추가로 생산성 향상을 위해 [VSCode 확장](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)과 [Android Studio/Intellij 확장](https://plugins.jetbrains.com/plugin/14975-getx-snippets)이 있습니다.** | 110 | +**추가로 생산성 향상을 위해 |
111 | +[VSCode 확장](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)과 [Android Studio/Intellij 확장](https://plugins.jetbrains.com/plugin/14975-getx-snippets)이 있습니다.** | ||
89 | 112 | ||
90 | # 설치 | 113 | # 설치 |
91 | 114 | ||
@@ -114,7 +137,6 @@ void main() => runApp(GetMaterialApp(home: Home())); | @@ -114,7 +137,6 @@ void main() => runApp(GetMaterialApp(home: Home())); | ||
114 | ``` | 137 | ``` |
115 | 138 | ||
116 | - 주석: 이는 Flutter의 MaterialApp을 변경하지 않으며 GetMaterialApp 또한 수정 된 MaterialApp이 아니고, 기본 MaterialApp을 자식으로 갖는 사전 구성된 위젯 일뿐입니다. 수동으로 구성 할 수 있지만 반드시 필요한 것은 아닙니다. GetMaterialApp은 라우트를 생성하고 추가하며, 번역을 추가하고, 라우트 탐색에 필요한 모든 것을 추가합니다. 만약 상태 관리 또는 종속성 관리에만 Get을 사용하는 경우 GetMaterialApp을 사용할 필요가 없습니다. GetMaterialApp은 라우트, 스택바, 국제화, bottomSheets, 다이얼로그 및 컨텍스트 부재와 라우트에 연관된 상위 api들에 필요합니다. | 139 | - 주석: 이는 Flutter의 MaterialApp을 변경하지 않으며 GetMaterialApp 또한 수정 된 MaterialApp이 아니고, 기본 MaterialApp을 자식으로 갖는 사전 구성된 위젯 일뿐입니다. 수동으로 구성 할 수 있지만 반드시 필요한 것은 아닙니다. GetMaterialApp은 라우트를 생성하고 추가하며, 번역을 추가하고, 라우트 탐색에 필요한 모든 것을 추가합니다. 만약 상태 관리 또는 종속성 관리에만 Get을 사용하는 경우 GetMaterialApp을 사용할 필요가 없습니다. GetMaterialApp은 라우트, 스택바, 국제화, bottomSheets, 다이얼로그 및 컨텍스트 부재와 라우트에 연관된 상위 api들에 필요합니다. |
117 | - | ||
118 | - 주석²: 이 단계는 라우트 관리 (`Get.to ()`,`Get.back ()` 등)를 사용하려는 경우에만 필요합니다. 사용하지 않을 경우 1 단계를 수행 할 필요가 없습니다. | 140 | - 주석²: 이 단계는 라우트 관리 (`Get.to ()`,`Get.back ()` 등)를 사용하려는 경우에만 필요합니다. 사용하지 않을 경우 1 단계를 수행 할 필요가 없습니다. |
119 | 141 | ||
120 | - 2 단계: | 142 | - 2 단계: |
@@ -339,6 +361,34 @@ class Messages extends Translations { | @@ -339,6 +361,34 @@ class Messages extends Translations { | ||
339 | Text('title'.tr); | 361 | Text('title'.tr); |
340 | ``` | 362 | ``` |
341 | 363 | ||
364 | +#### 단수와 복수의 번역 사용법 | ||
365 | + | ||
366 | +```dart | ||
367 | +var products = []; | ||
368 | +Text('singularKey'.trPlural('pluralKey', products.length, Args)); | ||
369 | +``` | ||
370 | + | ||
371 | +#### 파라미터로 번역 사용하는 방법 | ||
372 | + | ||
373 | +```dart | ||
374 | +import 'package:get/get.dart'; | ||
375 | + | ||
376 | + | ||
377 | +Map<String, Map<String, String>> get keys => { | ||
378 | + 'en_US': { | ||
379 | + 'logged_in': 'logged in as @name with email @email', | ||
380 | + }, | ||
381 | + 'es_ES': { | ||
382 | + 'logged_in': 'iniciado sesión como @name con e-mail @email', | ||
383 | + } | ||
384 | +}; | ||
385 | + | ||
386 | +Text('logged_in'.trParams({ | ||
387 | + 'name': 'Jhon', | ||
388 | + 'email': 'jhon@example.com' | ||
389 | + })); | ||
390 | +``` | ||
391 | + | ||
342 | ### 지역화 | 392 | ### 지역화 |
343 | 393 | ||
344 | `GetMaterialApp`의 파라미터를 전달하여 지역과 번역어를 정의합니다. | 394 | `GetMaterialApp`의 파라미터를 전달하여 지역과 번역어를 정의합니다. |
@@ -392,9 +442,11 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | @@ -392,9 +442,11 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | ||
392 | `.darkmode`가 활성화 될때 _light theme_ 로 바뀔것 이고 _light theme_ 가 활성화되면 _dark theme_ 로 변경될 것입니다. | 442 | `.darkmode`가 활성화 될때 _light theme_ 로 바뀔것 이고 _light theme_ 가 활성화되면 _dark theme_ 로 변경될 것입니다. |
393 | 443 | ||
394 | ## GetConnect | 444 | ## GetConnect |
445 | + | ||
395 | GetConnect는 http나 websockets으로 프론트와 백엔드의 통신을 위한 쉬운 방법입니다. | 446 | GetConnect는 http나 websockets으로 프론트와 백엔드의 통신을 위한 쉬운 방법입니다. |
396 | 447 | ||
397 | ### 기본 구성 | 448 | ### 기본 구성 |
449 | + | ||
398 | GetConnect를 간단하게 확장하고 Rest API나 websockets의 GET/POST/PUT/DELETE/SOCKET 메서드를 사용할 수 있습니다. | 450 | GetConnect를 간단하게 확장하고 Rest API나 websockets의 GET/POST/PUT/DELETE/SOCKET 메서드를 사용할 수 있습니다. |
399 | 451 | ||
400 | ```dart | 452 | ```dart |
@@ -417,7 +469,9 @@ class UserProvider extends GetConnect { | @@ -417,7 +469,9 @@ class UserProvider extends GetConnect { | ||
417 | } | 469 | } |
418 | } | 470 | } |
419 | ``` | 471 | ``` |
472 | + | ||
420 | ### 커스텀 구성 | 473 | ### 커스텀 구성 |
474 | + | ||
421 | GetConnect는 고도로 커스텀화 할 수 있습니다. base Url을 정의하고 응답자 및 요청을 수정하고 인증자를 정의할 수 있습니다. 그리고 인증 횟수까지 정의 할 수 있습니다. 더해서 추가 구성없이 모델로 응답을 변형시킬 수 있는 표준 디코더 정의도 가능합니다. | 475 | GetConnect는 고도로 커스텀화 할 수 있습니다. base Url을 정의하고 응답자 및 요청을 수정하고 인증자를 정의할 수 있습니다. 그리고 인증 횟수까지 정의 할 수 있습니다. 더해서 추가 구성없이 모델로 응답을 변형시킬 수 있는 표준 디코더 정의도 가능합니다. |
422 | 476 | ||
423 | ```dart | 477 | ```dart |
@@ -427,7 +481,8 @@ class HomeProvider extends GetConnect { | @@ -427,7 +481,8 @@ class HomeProvider extends GetConnect { | ||
427 | // 모든 요청은 jsonEncode로 CasesModel.fromJson()를 거칩니다. | 481 | // 모든 요청은 jsonEncode로 CasesModel.fromJson()를 거칩니다. |
428 | httpClient.defaultDecoder = CasesModel.fromJson; | 482 | httpClient.defaultDecoder = CasesModel.fromJson; |
429 | httpClient.baseUrl = 'https://api.covid19api.com'; | 483 | httpClient.baseUrl = 'https://api.covid19api.com'; |
430 | - // baseUrl = 'https://api.covid19api.com'; // [httpClient] 인스턴트 없이 사용하는경우 Http와 websockets의 baseUrl 정의 | 484 | + // baseUrl = 'https://api.covid19api.com'; |
485 | + // [httpClient] 인스턴트 없이 사용하는경우 Http와 websockets의 baseUrl 정의 | ||
431 | 486 | ||
432 | // 모든 요청의 헤더에 'apikey' 속성을 첨부합니다. | 487 | // 모든 요청의 헤더에 'apikey' 속성을 첨부합니다. |
433 | httpClient.addRequestModifier((request) { | 488 | httpClient.addRequestModifier((request) { |
@@ -482,6 +537,7 @@ final middlewares = [ | @@ -482,6 +537,7 @@ final middlewares = [ | ||
482 | GetMiddleware(priority: -8), | 537 | GetMiddleware(priority: -8), |
483 | ]; | 538 | ]; |
484 | ``` | 539 | ``` |
540 | + | ||
485 | 이 Middleware는 다음 순서로 실행됩니다. **-8 => 2 => 4 => 5** | 541 | 이 Middleware는 다음 순서로 실행됩니다. **-8 => 2 => 4 => 5** |
486 | 542 | ||
487 | ### Redirect | 543 | ### Redirect |
@@ -761,7 +817,8 @@ ValueBuilder<bool>( | @@ -761,7 +817,8 @@ ValueBuilder<bool>( | ||
761 | 817 | ||
762 | #### ObxValue | 818 | #### ObxValue |
763 | 819 | ||
764 | -[`ValueBuilder`](#valuebuilder)와 비슷하지만 Rx 인스턴스(마법같은 .obs를 기억하세요)를 전달하고 자동적으로 업데이트되는 반응형 버전입니다... 놀랍지 않습니까? | 820 | +[`ValueBuilder`](#valuebuilder)와 비슷하지만 Rx 인스턴스(마법같은 .obs를 기억하세요)를 전달하고 |
821 | +자동적으로 업데이트되는 반응형 버전입니다... 놀랍지 않습니까? | ||
765 | 822 | ||
766 | ```dart | 823 | ```dart |
767 | ObxValue((data) => Switch( | 824 | ObxValue((data) => Switch( |
@@ -877,6 +934,55 @@ user.update((value){ | @@ -877,6 +934,55 @@ user.update((value){ | ||
877 | 934 | ||
878 | print( user ); | 935 | print( user ); |
879 | ``` | 936 | ``` |
937 | +## StateMixin | ||
938 | + | ||
939 | +`UI` 상태를 처리하는 또 다른 방법은 `StateMixin<T>` 를 사용하는 것입니다. | ||
940 | +이를 구현하려면 `with`를 사용하여 `StateMixin<T>`을 추가하고 | ||
941 | +T 모델을 허용하는 컨트롤러에 연결합니다. | ||
942 | + | ||
943 | +``` dart | ||
944 | +class Controller extends GetController with StateMixin<User>{} | ||
945 | +``` | ||
946 | + | ||
947 | +`change()` 메소드는 우리가 원할 때마다 State를 변경합니다. | ||
948 | +다음과 같이 데이터와 상태를 전달하면 됩니다: | ||
949 | + | ||
950 | +```dart | ||
951 | +change(data, status: RxStatus.success()); | ||
952 | +``` | ||
953 | + | ||
954 | +RxStatus는 다음 상태를 허용합니다: | ||
955 | + | ||
956 | +``` dart | ||
957 | +RxStatus.loading(); | ||
958 | +RxStatus.success(); | ||
959 | +RxStatus.empty(); | ||
960 | +RxStatus.error('message'); | ||
961 | +``` | ||
962 | + | ||
963 | +UI에서 사용하는 방법: | ||
964 | + | ||
965 | +```dart | ||
966 | +class OtherClass extends GetView<Controller> { | ||
967 | + @override | ||
968 | + Widget build(BuildContext context) { | ||
969 | + return Scaffold( | ||
970 | + | ||
971 | + body: controller.obx( | ||
972 | + (state)=>Text(state.name), | ||
973 | + | ||
974 | + // 여기에 사용자 정의 로딩 표시기를 넣을 수 있지만 | ||
975 | + // 기본값은 Center(child:CircularProgressIndicator()) 입니다 | ||
976 | + onLoading: CustomLoadingIndicator(), | ||
977 | + onEmpty: Text('No data found'), | ||
978 | + | ||
979 | + // 여기에서도 자신의 오류 위젯을 설정할 수 있지만 | ||
980 | + // 기본값은 Center(child:Text(error)) 입니다 | ||
981 | + onError: (error)=>Text(error), | ||
982 | + ), | ||
983 | + ); | ||
984 | +} | ||
985 | +``` | ||
880 | 986 | ||
881 | #### GetView | 987 | #### GetView |
882 | 988 | ||
@@ -901,6 +1007,29 @@ print( user ); | @@ -901,6 +1007,29 @@ print( user ); | ||
901 | } | 1007 | } |
902 | ``` | 1008 | ``` |
903 | 1009 | ||
1010 | +#### GetResponsiveView | ||
1011 | + | ||
1012 | +Extend this widget to build responsive view. | ||
1013 | +this widget contains the `screen` property that have all | ||
1014 | +information about the screen size and type. | ||
1015 | + | ||
1016 | +##### 사용 방법 | ||
1017 | + | ||
1018 | +You have two options to build it. | ||
1019 | + | ||
1020 | +- with `builder` method you return the widget to build. | ||
1021 | +- with methods `desktop`, `tablet`,`phone`, `watch`. the specific | ||
1022 | + method will be built when the screen type matches the method | ||
1023 | + when the screen is [ScreenType.Tablet] the `tablet` method | ||
1024 | + will be exuded and so on. | ||
1025 | + **Note:** If you use this method please set the property `alwaysUseBuilder` to `false` | ||
1026 | + | ||
1027 | +With `settings` property you can set the width limit for the screen types. | ||
1028 | + | ||
1029 | + | ||
1030 | +Code to this screen | ||
1031 | +[code](https://github.com/SchabanBo/get_page_example/blob/master/lib/pages/responsive_example/responsive_view.dart) | ||
1032 | + | ||
904 | #### GetWidget | 1033 | #### GetWidget |
905 | 1034 | ||
906 | 대부분의 사람들이 이 위젯에대해 모르거나 사용법을 완전히 혼동합니다. | 1035 | 대부분의 사람들이 이 위젯에대해 모르거나 사용법을 완전히 혼동합니다. |
@@ -911,7 +1040,8 @@ _cache_ 이기 때문에 `const Stateless`가 될 수 없습니다. | @@ -911,7 +1040,8 @@ _cache_ 이기 때문에 `const Stateless`가 될 수 없습니다. | ||
911 | 1040 | ||
912 | 만약 **GetX**의 기능 중 또 다른 "흔하지 않은" 기능을 사용하는 경우:`Get.create()` | 1041 | 만약 **GetX**의 기능 중 또 다른 "흔하지 않은" 기능을 사용하는 경우:`Get.create()` |
913 | 1042 | ||
914 | -`Get.create(()=>Controller())`가 `Get.find<Controller>()`을 호출할 때마다 새로운 `Controller`를 생성할 것 입니다. | 1043 | +`Get.create(()=>Controller())`가 `Get.find<Controller>()`을 호출할 때마다 |
1044 | +새로운 `Controller`를 생성할 것 입니다. | ||
915 | 1045 | ||
916 | 여기서 `GetWidget`이 빛나게 됩니다... 예를 들어 Todo 리스트를 유지하려고 사용할 때 입니다. | 1046 | 여기서 `GetWidget`이 빛나게 됩니다... 예를 들어 Todo 리스트를 유지하려고 사용할 때 입니다. |
917 | 위젯이 "재구성"될때 동일한 controller 인스턴스를 유지할 것입니다. | 1047 | 위젯이 "재구성"될때 동일한 controller 인스턴스를 유지할 것입니다. |
@@ -919,14 +1049,14 @@ _cache_ 이기 때문에 `const Stateless`가 될 수 없습니다. | @@ -919,14 +1049,14 @@ _cache_ 이기 때문에 `const Stateless`가 될 수 없습니다. | ||
919 | #### GetxService | 1049 | #### GetxService |
920 | 1050 | ||
921 | 이 클래스틑 `GetxController`와 같이 동일한 생성주기(`onInit()`, `onReady()`, `onClose()`)를 공유합니다. | 1051 | 이 클래스틑 `GetxController`와 같이 동일한 생성주기(`onInit()`, `onReady()`, `onClose()`)를 공유합니다. |
922 | -하지만 이안에 "로직"은 없습니다. 단지 **GetX** 종속성 주입 시스템이 하위클래스를 메모리에서 삭제할 수 없음을 알립니다. | 1052 | +하지만 이안에 "로직"은 없습니다. 단지 **GetX** 종속성 주입 시스템이 하위클래스를 메모리에서 |
1053 | +**삭제할 수 없음**을 알립니다. | ||
923 | 1054 | ||
924 | 그래서 `Get.find()`로 활성화하고 항상 접근하는 "서비스들"을 유지하는데 매우 유용합니다. : | 1055 | 그래서 `Get.find()`로 활성화하고 항상 접근하는 "서비스들"을 유지하는데 매우 유용합니다. : |
925 | `ApiService`, `StorageService`, `CacheService`. | 1056 | `ApiService`, `StorageService`, `CacheService`. |
926 | 1057 | ||
927 | ```dart | 1058 | ```dart |
928 | Future<void> main() async { | 1059 | Future<void> main() async { |
929 | - WidgetsFlutterBinding.ensureInitialized() | ||
930 | await initServices(); /// 서비스들 초기화를 기다림. | 1060 | await initServices(); /// 서비스들 초기화를 기다림. |
931 | runApp(SomeApp()); | 1061 | runApp(SomeApp()); |
932 | } | 1062 | } |
@@ -964,7 +1094,8 @@ class SettingsService extends GetxService { | @@ -964,7 +1094,8 @@ class SettingsService extends GetxService { | ||
964 | ``` | 1094 | ``` |
965 | 1095 | ||
966 | `GetxService`를 실질적으로 지우는 한가지 방법은 앱의 "Hot Reboot"과 같은 `Get.reset()`뿐 입니다. | 1096 | `GetxService`를 실질적으로 지우는 한가지 방법은 앱의 "Hot Reboot"과 같은 `Get.reset()`뿐 입니다. |
967 | -따라서 앱 실행중 절대로 유지되어야 하는 클래스 인스턴스가 필요하면 `GetxService`를 사용하세요. | 1097 | +따라서 앱 실행중 절대로 유지되어야 하는 클래스 인스턴스가 필요하면 |
1098 | +`GetxService`를 사용하세요. | ||
968 | 1099 | ||
969 | # 2.0의 주요 변경점 | 1100 | # 2.0의 주요 변경점 |
970 | 1101 | ||
@@ -1056,6 +1187,7 @@ _프로젝트에 기여하고 싶으신가요? 우리는 귀하를 우리의 협 | @@ -1056,6 +1187,7 @@ _프로젝트에 기여하고 싶으신가요? 우리는 귀하를 우리의 협 | ||
1056 | 1187 | ||
1057 | ## 기사 및 비디오 | 1188 | ## 기사 및 비디오 |
1058 | 1189 | ||
1190 | +- [Flutter Getx EcoSystem package for arabic people](https://www.youtube.com/playlist?list=PLV1fXIAyjeuZ6M8m56zajMUwu4uE3-SL0) - Tutorial by [Pesa Coder](https://github.com/UsamaElgendy). | ||
1059 | - [Dynamic Themes in 3 lines using GetX™](https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3) - Tutorial by [Rod Brown](https://github.com/RodBr). | 1191 | - [Dynamic Themes in 3 lines using GetX™](https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3) - Tutorial by [Rod Brown](https://github.com/RodBr). |
1060 | - [Complete GetX™ Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI) - Route management video by Amateur Coder. | 1192 | - [Complete GetX™ Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI) - Route management video by Amateur Coder. |
1061 | - [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw) - State management video by Amateur Coder. | 1193 | - [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw) - State management video by Amateur Coder. |
@@ -1069,4 +1201,4 @@ _프로젝트에 기여하고 싶으신가요? 우리는 귀하를 우리의 협 | @@ -1069,4 +1201,4 @@ _프로젝트에 기여하고 싶으신가요? 우리는 귀하를 우리의 협 | ||
1069 | - [GetX Flutter Firebase Auth Example](https://medium.com/@jeffmcmorris/getx-flutter-firebase-auth-example-b383c1dd1de2) - Article by Jeff McMorris. | 1201 | - [GetX Flutter Firebase Auth Example](https://medium.com/@jeffmcmorris/getx-flutter-firebase-auth-example-b383c1dd1de2) - Article by Jeff McMorris. |
1070 | - [Flutter State Management with GetX – Complete App](https://www.appwithflutter.com/flutter-state-management-with-getx/) - by App With Flutter. | 1202 | - [Flutter State Management with GetX – Complete App](https://www.appwithflutter.com/flutter-state-management-with-getx/) - by App With Flutter. |
1071 | - [Flutter Routing with Animation using Get Package](https://www.appwithflutter.com/flutter-routing-using-get-package/) - by App With Flutter. | 1203 | - [Flutter Routing with Animation using Get Package](https://www.appwithflutter.com/flutter-routing-using-get-package/) - by App With Flutter. |
1072 | - | 1204 | +- [A minimal example on dartpad](https://dartpad.dev/2b3d0d6f9d4e312c5fdbefc414c1727e?) - by [Roi Peker](https://github.com/roipeker) |
-
Please register or login to post a comment