Committed by
GitHub
Update dependency_management.md
Alterei as partes onde falam de "_factory" e "_singl"
Showing
1 changed file
with
9 additions
and
7 deletions
@@ -143,7 +143,7 @@ Get.putAsync<S>( | @@ -143,7 +143,7 @@ Get.putAsync<S>( | ||
143 | ```dart | 143 | ```dart |
144 | Get.create<S>( | 144 | Get.create<S>( |
145 | // Obrigatório: um método assíncrono que vai ser executado para instanciar sua classe | 145 | // Obrigatório: um método assíncrono que vai ser executado para instanciar sua classe |
146 | - // Exemplo: Get.create<YourAsyncClass>( () async => await YourAsyncClass() ) | 146 | + // Exemplo: Get.create<YourClass>( () async => await YourClass() ) |
147 | FcBuilderFunc<S> builder, | 147 | FcBuilderFunc<S> builder, |
148 | 148 | ||
149 | // opcional: igual ao Get.put(), mas é usado quando você precisa de múltiplas instâncias de uma mesma classe. | 149 | // opcional: igual ao Get.put(), mas é usado quando você precisa de múltiplas instâncias de uma mesma classe. |
@@ -160,19 +160,21 @@ Get.create<S>( | @@ -160,19 +160,21 @@ Get.create<S>( | ||
160 | 160 | ||
161 | Primeiramente, vamos falar das variáveis `_factory` e `_singl`. Ambas são essenciais no processo de criação e uso de suas dependências, pois é através delas que podemos armazenar, apagar, recriar nossas instâncias. | 161 | Primeiramente, vamos falar das variáveis `_factory` e `_singl`. Ambas são essenciais no processo de criação e uso de suas dependências, pois é através delas que podemos armazenar, apagar, recriar nossas instâncias. |
162 | 162 | ||
163 | -- A `_factory` diz respeito ao armazenamento da instância. Quando você manipula os parâmetros `fenix`, `smartManagement` para não perder as instâncias da sua dependência, elas serão salvas na `_factory` para serem chamadas posteriormente. (*) | 163 | +Primeiro, vamos falar do `fenix` do Get.lazyPut e o `permanent` dos outros métodos. |
164 | 164 | ||
165 | -- A `_singl` diz respeito ao uso. Ou seja, se a sua instância está na `_singl`, ela está pronta para ser usada. Dependendo do método de instanciamento, a instância começa em `_factory` e depois vai, ou cria uma cópia, para `_singl`. | 165 | +- O `fenix` diz respeito ao armazenamento da instância. Quando você manipula os parâmetros `fenix` ou `smartManagement` para não perder as instâncias da sua dependência, elas serão salvas na para serem chamadas posteriormente. |
166 | 166 | ||
167 | -(*): A diferença fundamental entre `permanent` e `fenix` está em como você quer armazenas as suas instâncias. Reforçando: por padrão, o Get apaga as instâncias quando elas não estão em uso (Digamos que a tela 1 tenha o controlador A e tela 2, controlador B. Ao mover-se de 1 para 2, o controlador A perde o uso e portanto é apagado), mas se você optar por algo `permanent: true`, então ela não se perde nessa transição - o que é muito útil para serviços que você quer manter rodando na aplicação inteira. Já o `fenix`, é para serviços que você não se preocupa em perder por uma tela ou outra, mas quando você precisar chamar o serviço, você espera que ele "retorne das cinzas" (`fenix: true`) do que jeito que estava quando foi apagado. | 167 | +- O `permanent` diz respeito ao uso. Se a instância permanece ativa, ou se é apagada, quando não está em uso na tela. |
168 | + | ||
169 | +A diferença fundamental entre `permanent` e `fenix` está em como você quer armazenas as suas instâncias. Reforçando: por padrão, o Get apaga as instâncias quando elas não estão em uso (Digamos que a tela 1 tenha o controlador A e tela 2, controlador B. Ao mover-se de 1 para 2, o controlador A perde o uso e portanto é apagado), mas se você optar por algo `permanent: true`, então ela não se perde nessa transição - o que é muito útil para serviços que você quer manter rodando na aplicação inteira. Já o `fenix`, é para serviços que você não se preocupa em perder por uma tela ou outra, mas quando você precisar chamar o serviço, você espera que ele "retorne das cinzas" (`fenix: true`), criando uma nova instância. | ||
168 | 170 | ||
169 | Prosseguindo com as diferenças entre os métodos: | 171 | Prosseguindo com as diferenças entre os métodos: |
170 | 172 | ||
171 | -- Get.put e Get.putAsync seguem a mesma ordem de criação, com a diferença que o Async opta por aplicar um método assíncrono: Esses dois métodos criam e já inicializam a instância. Esta é inserida diretamente na variável `_singl`, através do método interno `insert` com os parâmetros `permanent: false` e `isSingleton: true` (esse parâmetro `isSingleton` serve apenas para dizer se é para utilizar a dependência colocada em `dependency`, ou se é para usar a dependência colocada no `FcBuilderFunc`). Depois disso, é chamado o `Get.find` que imediatamente inicializa as instâncias se elas estão em `_singl` (e elas estão!). | 173 | +- Get.put e Get.putAsync seguem a mesma ordem de criação, com a diferença que o Async opta por aplicar um método assíncrono: Esses dois métodos criam e já inicializam a instância. Esta é inserida diretamente na memória, através do método interno `insert` com os parâmetros `permanent: false` e `isSingleton: true` (esse parâmetro `isSingleton` serve apenas para dizer se é para utilizar a dependência colocada em `dependency`, ou se é para usar a dependência colocada no `FcBuilderFunc`). Depois disso, é chamado o `Get.find` que imediatamente inicializa as instâncias que estão na memória. |
172 | 174 | ||
173 | -- Get.create: Como o nome indica, você vai "criar" a sua dependência! Similar ao Get.put/putAsync, ela também chama o método interno `insert` para instanciamento. Contudo, `permanent` e `isSingleton` passam a ser `true` e `false` (Como estamos "criando" a nossa dependência, não tem como ela ser um Singleton de algo, logo, `false`). E por ser `permanent: true`, temos por padrão o benefício de não se perder entre telas! Além disso, não é chamado o `Get.find`, logo é como se fosse um `_factory`, mas armazenado no `_singl`. Ele é criado dessa forma para aproveitar o uso do parâmetro `permanent`, já que, vale ressaltar, o Get.create foi criado com o objetivo de criar instâncias não compartilhadas, mas que não se perdem, como por exemplo um botão em um listView, que você quer uma instância única para aquela lista - por conta disso, o Get.create deve ser usado em conjunto com o GetWidget. | 175 | +- Get.create: Como o nome indica, você vai "criar" a sua dependência! Similar ao `Get.put`, ela também chama o método interno `insert` para instanciamento. Contudo, `permanent` e `isSingleton` passam a ser `true` e `false` (Como estamos "criando" a nossa dependência, não tem como ela ser um Singleton de algo, logo, `false`). E por ser `permanent: true`, temos por padrão o benefício de não se perder entre telas! Além disso, não é chamado o `Get.find`, logo ela fica esperando ser chamada para ser usada. Ele é criado dessa forma para aproveitar o uso do parâmetro `permanent`, já que, vale ressaltar, o Get.create foi criado com o objetivo de criar instâncias não compartilhadas, mas que não se perdem, como por exemplo um botão em um listView, que você quer uma instância única para aquela lista - por conta disso, o Get.create deve ser usado em conjunto com o GetWidget. |
174 | 176 | ||
175 | -- Get.lazyPut: Como o nome dá a entender, é um processo preguiçoso (lazy). A instância é criada, mas ela não é chamada para uso logo em seguida, ela fica aguardando ser chamada. Diferente dos outros métodos, o `insert` não é chamado. Ao invés disso, a instância é inserida na `_factory`. E é aqui o entendimento chave de separar entre `_factory` e `_singl`: se queremos criar algo para ser chamado só depois, não vamos misturá-lo com as coisas que estão sendo usadas agora. E é aqui que entra a mágica do `fenix`. Se você optou por deixar `fenix: false`, e seu `smartManagement` não for `keepFactory`, então ao usar o `Get.find` a instância passa de `_factory` para `singl` e é deletada do `_factory` para não ocupar espaço na memória. Agora, se você optou por `fenix: true`, a instância continua a existir no `_factory`, mesmo indo para a `_singl` para ser chamada futuramente caso precise. | 177 | +- Get.lazyPut: Como o nome dá a entender, é um processo preguiçoso (lazy). A instância é criada, mas ela não é chamada para uso logo em seguida, ela fica aguardando ser chamada. Diferente dos outros métodos, o `insert` não é chamado. Ao invés disso, a instância é inserida em outra parte na memória, uma parte responsável por dizer se a instância pode ser recriada ou não, vamos chamá-la de "fábrica". Se queremos criar algo para ser chamado só depois, não vamos misturá-lo com as coisas que estão sendo usadas agora. E é aqui que entra a mágica do `fenix`. Se você optou por deixar `fenix: false`, e seu `smartManagement` não for `keepFactory`, então ao usar o `Get.find` a instância passa da "fábrica" para a área comum das instância. Em seguinda, por padrão é removida da "fábrica". Agora, se você optou por `fenix: true`, a instância continua a existir nessa parte dedicada, mesmo indo para a área comum, para ser chamada futuramente caso precise. |
176 | 178 | ||
177 | ## Bindings | 179 | ## Bindings |
178 | 180 |
-
Please register or login to post a comment