Showing
1 changed file
with
42 additions
and
42 deletions
@@ -8,9 +8,10 @@ | @@ -8,9 +8,10 @@ | ||
8 | - [Применение методов/классов создания экземпляров](#применение-методовклассов-создания-экземпляров) | 8 | - [Применение методов/классов создания экземпляров](#применение-методовклассов-создания-экземпляров) |
9 | - [Различия между методами](#различия-между-методами) | 9 | - [Различия между методами](#различия-между-методами) |
10 | - [Подвязки](#подвязки) | 10 | - [Подвязки](#подвязки) |
11 | - - [Применение](#применение) | 11 | + - [Класс Bindings](#класс-bindings) |
12 | - [BindingsBuilder](#bindingsbuilder) | 12 | - [BindingsBuilder](#bindingsbuilder) |
13 | - [SmartManagement](#smartmanagement) | 13 | - [SmartManagement](#smartmanagement) |
14 | + - [Как поменять](#как-поменять) | ||
14 | - [SmartManagement.full](#smartmanagementfull) | 15 | - [SmartManagement.full](#smartmanagementfull) |
15 | - [SmartManagement.onlyBuilders](#smartmanagementonlybuilders) | 16 | - [SmartManagement.onlyBuilders](#smartmanagementonlybuilders) |
16 | - [SmartManagement.keepFactory](#smartmanagementkeepfactory) | 17 | - [SmartManagement.keepFactory](#smartmanagementkeepfactory) |
@@ -222,25 +223,25 @@ Get.delete<Controller>(); //usually you don't need to do this because GetX alrea | @@ -222,25 +223,25 @@ Get.delete<Controller>(); //usually you don't need to do this because GetX alrea | ||
222 | 223 | ||
223 | - Get.lazyPut: Как следует из названия, это ленивый процесс. Экземпляр создается, но он не вызывается для немедленного использования, он остается в ожидании вызова. В отличие от других методов, `insert` не вызывается здесь. Вместо этого экземпляр вставляется в другую часть памяти, часть, отвечающую за определение возможности воссоздания экземпляра, назовем это «фабрикой». Если мы хотим создать что-то, что будет использоваться позже, это не будет смешиваться с вещами, которые использовались сейчас. И здесь вступает в силу магия `fenix`: если вы решаете оставить `fenix: false`, и ваш `smartManagement` не является `keepFactory`, то, при использовании `Get.find`, экземпляр изменит место в памяти с «фабрики» на область памяти общего экземпляра. Сразу после этого по умолчанию удаляется с «фабрики». Теперь, если вы выберете `fenix: true`, экземпляр продолжит существовать в этой выделенной части, даже перейдя в общую область, для повторного вызова в будущем. | 224 | - Get.lazyPut: Как следует из названия, это ленивый процесс. Экземпляр создается, но он не вызывается для немедленного использования, он остается в ожидании вызова. В отличие от других методов, `insert` не вызывается здесь. Вместо этого экземпляр вставляется в другую часть памяти, часть, отвечающую за определение возможности воссоздания экземпляра, назовем это «фабрикой». Если мы хотим создать что-то, что будет использоваться позже, это не будет смешиваться с вещами, которые использовались сейчас. И здесь вступает в силу магия `fenix`: если вы решаете оставить `fenix: false`, и ваш `smartManagement` не является `keepFactory`, то, при использовании `Get.find`, экземпляр изменит место в памяти с «фабрики» на область памяти общего экземпляра. Сразу после этого по умолчанию удаляется с «фабрики». Теперь, если вы выберете `fenix: true`, экземпляр продолжит существовать в этой выделенной части, даже перейдя в общую область, для повторного вызова в будущем. |
224 | 225 | ||
225 | -## Bindings | 226 | +## Подвязки |
226 | 227 | ||
227 | -One of the great differentials of this package, perhaps, is the possibility of full integration of the routes, state manager and dependency manager. | ||
228 | -When a route is removed from the Stack, all controllers, variables, and instances of objects related to it are removed from memory. If you are using streams or timers, they will be closed automatically, and you don't have to worry about any of that. | ||
229 | -In version 2.10 Get completely implemented the Bindings API. | ||
230 | -Now you no longer need to use the init method. You don't even have to type your controllers if you don't want to. You can start your controllers and services in the appropriate place for that. | ||
231 | -The Binding class is a class that will decouple dependency injection, while "binding" routes to the state manager and dependency manager. | ||
232 | -This allows Get to know which screen is being displayed when a particular controller is used and to know where and how to dispose of it. | ||
233 | -In addition, the Binding class will allow you to have SmartManager configuration control. You can configure the dependencies to be arranged when removing a route from the stack, or when the widget that used it is laid out, or neither. You will have intelligent dependency management working for you, but even so, you can configure it as you wish. | 228 | +Возможно, одной из главных особенностей этого пакета является возможность полной интеграции маршрутов, менеджера состояний и менеджера зависимостей. |
229 | +Когда маршрут удаляется из стека, все контроллеры, переменные и экземпляры связанных с ним объектов удаляются из памяти. Если вы используете потоки или таймеры, они закроются автоматически, и вам не о чем беспокоиться. | ||
230 | +В версии 2.10 полностью реализован API привязок. | ||
231 | +Теперь вам больше не нужно использовать метод инициализации. Вам даже не нужно вводить контроллеры, если вы этого не хотите. Вы можете запустить свои контроллеры и серисы в соответствующем для этого месте. | ||
232 | +Класс Binding - это класс, который будет разделять внедрение зависимостей, при этом «привязывая» маршруты к диспетчеру состояний и диспетчеру зависимостей. | ||
233 | +Этот класс позволяет Get узнать, какой экран отображается при использовании конкретного контроллера, а также узнать, где и как его удалить. | ||
234 | +Кроме того, класс Binding позволит вам контролировать конфигурацию SmartManager. Вы можете настроить зависимости, которые будут упорядочены при удалении маршрута из стека, или когда виджет, который его использовал, выкладывается, или ни то, ни другое. На вас будет работать интеллектуальное управление зависимостями, но даже в этом случае вы можете настроить его по своему усмотрению. | ||
234 | 235 | ||
235 | -### Bindings class | 236 | +### Класс Bindings |
236 | 237 | ||
237 | -- Create a class and implements Binding | 238 | +- Создайте класс и реализуйте Binding |
238 | 239 | ||
239 | ```dart | 240 | ```dart |
240 | class HomeBinding implements Bindings {} | 241 | class HomeBinding implements Bindings {} |
241 | ``` | 242 | ``` |
242 | 243 | ||
243 | -Your IDE will automatically ask you to override the "dependencies" method, and you just need to click on the lamp, override the method, and insert all the classes you are going to use on that route: | 244 | +Ваша IDE автоматически попросит вас переопределить метод «зависимостей», и вам просто нужно последовать этой просьбе, переопределить метод и вставить все классы, которые вы собираетесь использовать на этом маршруте: |
244 | 245 | ||
245 | ```dart | 246 | ```dart |
246 | class HomeBinding implements Bindings { | 247 | class HomeBinding implements Bindings { |
@@ -259,9 +260,9 @@ class DetailsBinding implements Bindings { | @@ -259,9 +260,9 @@ class DetailsBinding implements Bindings { | ||
259 | } | 260 | } |
260 | ``` | 261 | ``` |
261 | 262 | ||
262 | -Now you just need to inform your route, that you will use that binding to make the connection between route manager, dependencies and states. | 263 | +Теперь вам просто нужно сообщить своему маршруту, что вы будете использовать эту привязку для установления связи между диспетчером маршрутов, зависимостями и состояниями. |
263 | 264 | ||
264 | -- Using named routes: | 265 | +- Используя именованные маршруты: |
265 | 266 | ||
266 | ```dart | 267 | ```dart |
267 | getPages: [ | 268 | getPages: [ |
@@ -278,16 +279,16 @@ getPages: [ | @@ -278,16 +279,16 @@ getPages: [ | ||
278 | ]; | 279 | ]; |
279 | ``` | 280 | ``` |
280 | 281 | ||
281 | -- Using normal routes: | 282 | +- Используя обычные маршруты: |
282 | 283 | ||
283 | ```dart | 284 | ```dart |
284 | Get.to(Home(), binding: HomeBinding()); | 285 | Get.to(Home(), binding: HomeBinding()); |
285 | Get.to(DetailsView(), binding: DetailsBinding()) | 286 | Get.to(DetailsView(), binding: DetailsBinding()) |
286 | ``` | 287 | ``` |
287 | 288 | ||
288 | -There, you don't have to worry about memory management of your application anymore, Get will do it for you. | 289 | +Вам больше не нужно беспокоиться об управлении памятью вашего приложения, Get сделает это за вас. |
289 | 290 | ||
290 | -The Binding class is called when a route is called, you can create an "initialBinding in your GetMaterialApp to insert all the dependencies that will be created. | 291 | +Класс Binding вызывается при вызове маршрута, вы можете создать "initialBinding" в GetMaterialApp, чтобы вставить все зависимости, которые будут созданы. |
291 | 292 | ||
292 | ```dart | 293 | ```dart |
293 | GetMaterialApp( | 294 | GetMaterialApp( |
@@ -298,8 +299,8 @@ GetMaterialApp( | @@ -298,8 +299,8 @@ GetMaterialApp( | ||
298 | 299 | ||
299 | ### BindingsBuilder | 300 | ### BindingsBuilder |
300 | 301 | ||
301 | -The default way of creating a binding is by creating a class that implements Bindings. | ||
302 | -But alternatively, you can use `BindingsBuilder` callback so that you can simply use a function to instantiate whatever you desire. | 302 | +По умолчанию привязка создается путем создания класса, реализующего привязки. |
303 | +Но в качестве альтернативы вы можете использовать обратный вызов `BindingsBuilder`, чтобы просто использовать функцию для создания всего, что вы хотите. | ||
303 | 304 | ||
304 | Example: | 305 | Example: |
305 | 306 | ||
@@ -323,19 +324,19 @@ getPages: [ | @@ -323,19 +324,19 @@ getPages: [ | ||
323 | ]; | 324 | ]; |
324 | ``` | 325 | ``` |
325 | 326 | ||
326 | -That way you can avoid to create one Binding class for each route making this even simpler. | 327 | +Таким образом, вы можете избежать создания одного класса привязки для каждого маршрута, что сделает это еще проще. |
327 | 328 | ||
328 | -Both ways of doing work perfectly fine and we want you to use what most suit your tastes. | 329 | +Оба способа работают идеально, и мы хотим, чтобы вы использовали то, что больше всего соответствует вашим вкусам. |
329 | 330 | ||
330 | ### SmartManagement | 331 | ### SmartManagement |
331 | 332 | ||
332 | -GetX by default disposes unused controllers from memory, even if a failure occurs and a widget that uses it is not properly disposed. | ||
333 | -This is what is called the `full` mode of dependency management. | ||
334 | -But if you want to change the way GetX controls the disposal of classes, you have `SmartManagement` class that you can set different behaviors. | 333 | +GetX по умолчанию удаляет неиспользуемые контроллеры из памяти, даже если происходит сбой и виджет, который их использует, не удаляется должным образом. |
334 | +Это то, что называется `полным` режимом управления зависимостями. | ||
335 | +Но если вы хотите поменять способ, которым GetX управляет удалением классов, у вас есть класс `SmartManagement`, в котором вы можете задавать другое поведение. | ||
335 | 336 | ||
336 | -#### How to change | 337 | +#### Как поменять |
337 | 338 | ||
338 | -If you want to change this config (which you usually don't need) this is the way: | 339 | +Если вы хотите поменять эту конфигурацию (что обычно не требуется), вот способ: |
339 | 340 | ||
340 | ```dart | 341 | ```dart |
341 | void main () { | 342 | void main () { |
@@ -350,30 +351,29 @@ void main () { | @@ -350,30 +351,29 @@ void main () { | ||
350 | 351 | ||
351 | #### SmartManagement.full | 352 | #### SmartManagement.full |
352 | 353 | ||
353 | -It is the default one. Dispose classes that are not being used and were not set to be permanent. In the majority of the cases you will want to keep this config untouched. If you new to GetX then don't change this. | 354 | +Это значение по умолчанию. Удаляет классы, которые не используются и не были постоянными. В большинстве случаев вы захотите оставить эту конфигурацию нетронутой. Если вы новичок в GetX, не меняйте это. |
354 | 355 | ||
355 | #### SmartManagement.onlyBuilders | 356 | #### SmartManagement.onlyBuilders |
356 | -With this option, only controllers started in `init:` or loaded into a Binding with `Get.lazyPut()` will be disposed. | 357 | +С этой опцией будут удалены только контроллеры, запущенные в `init:` или загруженные в Binding с помощью `Get.lazyPut()`. |
357 | 358 | ||
358 | -If you use `Get.put()` or `Get.putAsync()` or any other approach, SmartManagement will not have permissions to exclude this dependency. | 359 | +Если вы используете `Get.put()` или `Get.putAsync()` или любой другой подход, SmartManagement не будет иметь разрешений на исключение этой зависимости. |
359 | 360 | ||
360 | -With the default behavior, even widgets instantiated with "Get.put" will be removed, unlike SmartManagement.onlyBuilders. | 361 | +При поведении по умолчанию даже виджеты, созданные с помощью Get.put, будут удалены, в отличие от SmartManagement.onlyBuilders. |
361 | 362 | ||
362 | #### SmartManagement.keepFactory | 363 | #### SmartManagement.keepFactory |
363 | 364 | ||
364 | -Just like SmartManagement.full, it will remove it's dependencies when it's not being used anymore. However, it will keep their factory, which means it will recreate the dependency if you need that instance again. | 365 | +Как и SmartManagement.full, он удаляет зависимости, когда он больше не используется. Однако он сохранит свою фабрику, что означает, что он воссоздает зависимость, если вам снова понадобится этот экземпляр. |
365 | 366 | ||
366 | -### How bindings work under the hood | ||
367 | -Bindings creates transitory factories, which are created the moment you click to go to another screen, and will be destroyed as soon as the screen-changing animation happens. | ||
368 | -This happens so fast that the analyzer will not even be able to register it. | ||
369 | -When you navigate to this screen again, a new temporary factory will be called, so this is preferable to using SmartManagement.keepFactory, but if you don't want to create Bindings, or want to keep all your dependencies on the same Binding, it will certainly help you. | ||
370 | -Factories take up little memory, they don't hold instances, but a function with the "shape" of that class you want. | ||
371 | -This has a very low cost in memory, but since the purpose of this lib is to get the maximum performance possible using the minimum resources, Get removes even the factories by default. | ||
372 | -Use whichever is most convenient for you. | 367 | +### Как подвязки работают под капотом |
368 | +Привязки создают временные фабрики, которые создаются в тот момент, когда вы кликаете для перехода на другой экран, и будут уничтожены, как только произойдет анимация смены экрана. | ||
369 | +Это происходит так быстро, что анализатор даже не сможет это зарегистрировать. | ||
370 | +Когда вы снова перейдете на этот экран, будет вызвана новая временная фабрика, поэтому это предпочтительнее, чем использование SmartManagement.keepFactory, но если вы не хотите создавать привязки или хотите сохранить все свои зависимости в одной привязке, это вам поможет. | ||
371 | +Фабрики занимают мало памяти, они содержат не экземпляры, а функцию с «формой» того класса, который вам нужен. | ||
372 | +Это имеет очень низкую стоимость памяти, но поскольку цель этой библиотеки - получить максимально возможную производительность с использованием минимальных ресурсов, Get по умолчанию удаляет даже фабрики. Используйте то, что вам удобнее. | ||
373 | 373 | ||
374 | -## Notes | 374 | +## Примечания |
375 | 375 | ||
376 | -- DO NOT USE SmartManagement.keepFactory if you are using multiple Bindings. It was designed to be used without Bindings, or with a single Binding linked in the GetMaterialApp's initialBinding. | 376 | +- НЕ ИСПОЛЬЗУЙТЕ SmartManagement.keepFactory, если вы используете несколько привязок. Он был разработан для использования без привязок или с одной привязкой, связанной в initialBinding GetMaterialApp. |
377 | 377 | ||
378 | -- Using Bindings is completely optional, if you want you can use `Get.put()` and `Get.find()` on classes that use a given controller without any problem. | ||
379 | -However, if you work with Services or any other abstraction, I recommend using Bindings for a better organization. | 378 | +- Использование привязок совершенно необязательно, если вы хотите, вы можете без проблем использовать `Get.put()` и `Get.find()` для классов, которые используют данный контроллер. |
379 | +Однако, если вы работаете со службами или любой другой абстракцией, я рекомендую использовать привязки для лучшей организации. |
-
Please register or login to post a comment