Huy Manh

Fix anchor to heading not work on Vietnamese and some typo

@@ -16,53 +16,53 @@ @@ -16,53 +16,53 @@
16 16
17 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/getx.png) 17 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/getx.png)
18 18
19 -- [Về Getx](#about-get)  
20 -- [Cài Đặt](#installing)  
21 -- [Counter App với GetX](#counter-app-with-getx)  
22 -- [Tam Trụ](#the-three-pillars)  
23 - - [Quản lý State](#state-management)  
24 - - [Quản lý Reactive State](#reactive-state-manager)  
25 - - [Thêm thông tin về quản lý state](#more-details-about-state-management)  
26 - - [Quản lý route](#route-management)  
27 - - [Thêm thông tin về quản lý route](#more-details-about-route-management)  
28 - - [Quản lý dependency](#dependency-management)  
29 - - [Thêm thông tin về quản lý dependency](#more-details-about-dependency-management) 19 +- [Về Getx](#về-getx)
  20 +- [Cài Đặt](#cài-đặt)
  21 +- [Counter App với GetX](#counter-app-với-getx)
  22 +- [Tam Trụ](#tam-trụ)
  23 + - [Quản lý State](#quản-lý-state)
  24 + - [Quản lý Reactive State](#quản-lý-reactive-state)
  25 + - [Thêm thông tin về quản lý state](#thêm-thông-tin-về-quản-lý-state)
  26 + - [Quản lý route](#quản-lý-route)
  27 + - [Thêm thông tin về quản lý route](#thêm-thông-tin-về-quản-lý-route)
  28 + - [Quản lý dependency](#quản-lý-dependency)
  29 + - [Thêm thông tin về quản lý dependency](#thêm-thông-tin-về-quản-lý-dependency)
30 - [Utils](#utils) 30 - [Utils](#utils)
31 - [Internationalization](#internationalization) 31 - [Internationalization](#internationalization)
32 - - [Dịch thuật](#translations)  
33 - - [Sử dụng bản dịch thuật](#using-translations) 32 + - [Dịch thuật](#dịch-thuật)
  33 + - [Sử dụng bản dịch thuật](#sử-dụng-bản-dịch-thuật)
34 - [Locales](#locales) 34 - [Locales](#locales)
35 - - [Change locale](#change-locale) 35 + - [Đổi locale](#đổi-locale)
36 - [System locale](#system-locale) 36 - [System locale](#system-locale)
37 - - [Đổi Theme](#change-theme) 37 + - [Đổi Theme](#đổi-theme)
38 - [GetConnect](#getconnect) 38 - [GetConnect](#getconnect)
39 - - [Cấu hình mặc định](#default-configuration)  
40 - - [Cấu hình tùy chỉnh](#custom-configuration) 39 + - [Cấu hình mặc định](#cấu-hình-mặc-định)
  40 + - [Tùy chỉnh](#tùy-chỉnh)
41 - [GetPage Middleware](#getpage-middleware) 41 - [GetPage Middleware](#getpage-middleware)
42 - - [Ưu tiên](#priority)  
43 - - [Chuyển hướng](#redirect) 42 + - [Ưu tiên](#ưu-tiên)
  43 + - [Chuyển hướng](#chuyển-hướng)
44 - [onPageCalled](#onpagecalled) 44 - [onPageCalled](#onpagecalled)
45 - [OnBindingsStart](#onbindingsstart) 45 - [OnBindingsStart](#onbindingsstart)
46 - [OnPageBuildStart](#onpagebuildstart) 46 - [OnPageBuildStart](#onpagebuildstart)
47 - [OnPageBuilt](#onpagebuilt) 47 - [OnPageBuilt](#onpagebuilt)
48 - [OnPageDispose](#onpagedispose) 48 - [OnPageDispose](#onpagedispose)
49 - - [APIs nâng cao khác](#other-advanced-apis)  
50 - - [Cấu hình thủ công và cài đặt chung tùy chọn](#optional-global-settings-and-manual-configurations) 49 + - [APIs nâng cao khác](#apis-nâng-cao-khác)
  50 + - [Cấu hình thủ công và cài đặt chung tuỳ chọn](#cấu-hình-thủ-công-và-cài-đặt-chung-tuỳ-chọn)
51 - [Local State Widgets](#local-state-widgets) 51 - [Local State Widgets](#local-state-widgets)
52 - [ValueBuilder](#valuebuilder) 52 - [ValueBuilder](#valuebuilder)
53 - [ObxValue](#obxvalue) 53 - [ObxValue](#obxvalue)
54 - - [Mẹo hữu ích](#useful-tips) 54 + - [Mẹo hữu ích](#mẹo-hữu-ích)
55 - [GetView](#getview) 55 - [GetView](#getview)
56 - [GetResponsiveView](#getresponsiveview) 56 - [GetResponsiveView](#getresponsiveview)
57 - - [Hướng dẫn sử dụng trước khi dùng](#how-to-use-it) 57 + - [Hướng dẫn sử dụng trước khi dùng](#hướng-dẫn-sử-dụng-trước-khi-dùng)
58 - [GetWidget](#getwidget) 58 - [GetWidget](#getwidget)
59 - [GetxService](#getxservice) 59 - [GetxService](#getxservice)
60 -- [Thay đổi đột phá 2.0](#breaking-changes-from-20)  
61 -- [Tại sao lại dùng GetX](#why-getx)  
62 -- [Cộng đồng](#community)  
63 - - [Kênh Cộng đồng](#community-channels)  
64 - - [Cách cống hiến](#how-to-contribute)  
65 - - [Các bài báo và video](#articles-and-videos) 60 +- [Thay đổi đột phá 2.0](#thay-đổi-đột-phá-2.0)
  61 +- [Tại sao lại dùng GetX](#tại-sao-lại-dùng-getx)
  62 +- [Cộng đồng](#cộng-đồng)
  63 + - [Kênh Cộng đồng](#kênh-cộng-đồng)
  64 + - [Cách cống hiến](#cách-cống-hiến)
  65 + - [Các bài báo và video](#các-bài-báo-và-video)
66 66
67 # Về Getx 67 # Về Getx
68 68
@@ -109,21 +109,21 @@ Import get vào file cần sử dụng: @@ -109,21 +109,21 @@ Import get vào file cần sử dụng:
109 import 'package:get/get.dart'; 109 import 'package:get/get.dart';
110 ``` 110 ```
111 111
112 -# Counter App with GetX 112 +# Counter App với GetX
113 113
114 Dự án "counter" được tạo theo mặc định trên dự án mới trên Flutter có hơn 100 dòng (có comments). Để thể hiện sức mạnh của Get, tôi sẽ trình bày cách tạo "counter" thay đổi trạng thái với mỗi lần nhấp, chuyển đổi giữa các trang và chia sẻ trạng thái giữa các màn hình, tất cả đều theo cách có tổ chức, tách biệt logic nghiệp vụ khỏi chế độ xem, CHỈ VỚI 26 DÒNG! 114 Dự án "counter" được tạo theo mặc định trên dự án mới trên Flutter có hơn 100 dòng (có comments). Để thể hiện sức mạnh của Get, tôi sẽ trình bày cách tạo "counter" thay đổi trạng thái với mỗi lần nhấp, chuyển đổi giữa các trang và chia sẻ trạng thái giữa các màn hình, tất cả đều theo cách có tổ chức, tách biệt logic nghiệp vụ khỏi chế độ xem, CHỈ VỚI 26 DÒNG!
115 115
116 -- Step 1: 116 +- Bước 1:
117 Thêm "Get" trước MaterialApp, nó sẽ thành GetMaterialApp 117 Thêm "Get" trước MaterialApp, nó sẽ thành GetMaterialApp
118 118
119 ```dart 119 ```dart
120 void main() => runApp(GetMaterialApp(home: Home())); 120 void main() => runApp(GetMaterialApp(home: Home()));
121 ``` 121 ```
122 122
123 -- Chí ú: điều này không sửa đổi MaterialApp của Flutter, GetMaterialApp không phải là MaterialApp được sửa đổi, nó chỉ là một Widget được tạo trước với MaterialApp mặc định là child. Bạn có thể cấu hình điều này theo cách thủ công, nhưng nó chắc chắn là không cần thiết. GetMaterialApp sẽ tạo các route, đưa chúng vào, đưa bản dịch, đưa mọi thứ bạn cần để điều hướng route. Nếu bạn chỉ sử dụng Get để quản lý trạng thái hoặc quản lý phụ thuộc, thì không cần thiết phải sử dụng GetMaterialApp. Tóm lại, GetMaterialApp CHỈ cần thiết cho các route, snacksbar, internationalization, bottomSheets, Dialog và các APIs cấp cao liên quan đến route và không có "context".  
124 -- Chí ú²: Một lần nữa, bước này CHỈ cần thiết nếu bạn sử dụng quản lý route (`Get.to ()`, `Get.back () ', v.v.). Nếu bạn không sử dụng nó thì không cần thực hiện bước 1 123 +- Chú ý: điều này không sửa đổi MaterialApp của Flutter, GetMaterialApp không phải là MaterialApp được sửa đổi, nó chỉ là một Widget được tạo trước với MaterialApp mặc định là child. Bạn có thể cấu hình điều này theo cách thủ công, nhưng nó chắc chắn là không cần thiết. GetMaterialApp sẽ tạo các route, đưa chúng vào, đưa bản dịch, đưa mọi thứ bạn cần để điều hướng route. Nếu bạn chỉ sử dụng Get để quản lý trạng thái hoặc quản lý phụ thuộc, thì không cần thiết phải sử dụng GetMaterialApp. Tóm lại, GetMaterialApp CHỈ cần thiết cho các route, snacksbar, internationalization, bottomSheets, Dialog và các APIs cấp cao liên quan đến route và không có "context".
  124 +- Chú ý²: Một lần nữa, bước này CHỈ cần thiết nếu bạn sử dụng quản lý route (`Get.to ()`, `Get.back () ', v.v.). Nếu bạn không sử dụng nó thì không cần thực hiện bước 1
125 125
126 -- Step 2: 126 +- Bước 2:
127 Tạo lớp business logic của bạn và đặt tất cả các variables, function và controller bên trong nó. 127 Tạo lớp business logic của bạn và đặt tất cả các variables, function và controller bên trong nó.
128 Bạn có thể làm cho bất kỳ variables nào có thể quan sát được bằng cách sử dụng ".obs" đơn giản. 128 Bạn có thể làm cho bất kỳ variables nào có thể quan sát được bằng cách sử dụng ".obs" đơn giản.
129 129
@@ -134,7 +134,7 @@ class Controller extends GetxController{ @@ -134,7 +134,7 @@ class Controller extends GetxController{
134 } 134 }
135 ``` 135 ```
136 136
137 -- Step 3: 137 +- Bước 3:
138 Tạo widget của bạn, sử dụng StatelessWidget và tiết kiệm RAM, với Get, bạn có thể không cần sử dụng StatefulWidget nữa. 138 Tạo widget của bạn, sử dụng StatelessWidget và tiết kiệm RAM, với Get, bạn có thể không cần sử dụng StatefulWidget nữa.
139 139
140 ```dart 140 ```dart
@@ -191,10 +191,10 @@ Get has two different state managers: the simple state manager (we'll call it Ge @@ -191,10 +191,10 @@ Get has two different state managers: the simple state manager (we'll call it Ge
191 Lập trình phản ứng (reactive programming) có thể khiến nhiều người xa lánh vì nó được cho là phức tạp. GetX biến lập trình phản ứng thành một thứ khá đơn giản: 191 Lập trình phản ứng (reactive programming) có thể khiến nhiều người xa lánh vì nó được cho là phức tạp. GetX biến lập trình phản ứng thành một thứ khá đơn giản:
192 192
193 - Bạn sẽ không cần tạo StreamControllers. 193 - Bạn sẽ không cần tạo StreamControllers.
194 -- Bạn sẽ không cần tạo StreamBuilder cho mỗi biến 194 +- Bạn sẽ không cần tạo StreamBuilder cho mỗi biến.
195 - Bạn sẽ không cần tạo một lớp cho mỗi trạng thái. 195 - Bạn sẽ không cần tạo một lớp cho mỗi trạng thái.
196 - Bạn sẽ không cần tạo get cho một giá trị ban đầu. 196 - Bạn sẽ không cần tạo get cho một giá trị ban đầu.
197 -- Bạn sẽ không cần sử dụng trình tạo mã 197 +- Bạn sẽ không cần sử dụng trình tạo mã.
198 198
199 Lập trình phản ứng với Get dễ dàng như sử dụng setState. 199 Lập trình phản ứng với Get dễ dàng như sử dụng setState.
200 200
@@ -712,7 +712,7 @@ context.isTablet() @@ -712,7 +712,7 @@ context.isTablet()
712 context.responsiveValue<T>() 712 context.responsiveValue<T>()
713 ``` 713 ```
714 714
715 -### Cấu hình thủ công và cài đặt chung tùy chọn 715 +### Cấu hình thủ công và cài đặt chung tuỳ chọn
716 716
717 GetMaterialApp configures everything for you, but if you want to configure Get manually. 717 GetMaterialApp configures everything for you, but if you want to configure Get manually.
718 718