You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/docs/flutter_modular/dependency-injection.md
+12-12Lines changed: 12 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ sidebar_position: 3
4
4
5
5
# Dependency Injection
6
6
7
-
We generally code with maintenance and scalability in mind, applying project-specific patterns
8
-
to a given function and improving the structure of our code. We must to pay attention on our code,
9
-
otherwise it can be a covertly problem. Let's look at the practical example:
7
+
We generally code with maintainability and scalability in mind, applying project-specific patterns
8
+
to a given function and improving the structure of our code. We must pay attention to our code,
9
+
otherwise it can become a hidden problem. Let's look at a practical example:
10
10
11
11
```dart
12
12
class Client {
@@ -27,7 +27,7 @@ Despite being a simple and functional approach, having a class instance within t
27
27
We call it "Dependency Coupling" when we use an outer class in this way, because the *Client* class
28
28
is totally dependent on the functioning of the **XPTOEmail** object.
29
29
30
-
To break a class's bond with its dependency, we generally prefer to "inject" the dependency instances through constructor, setters or methods. That's what we call "Dependency Injection".
30
+
To break a class's bond with its dependency, we generally prefer to "inject" the dependency instances through a constructor, setters, or methods. That's what we call "Dependency Injection".
31
31
32
32
Let's fix the **Customer** class by injecting the **XPTOEmail** instance by constructor:
33
33
@@ -42,11 +42,11 @@ class Client {
42
42
}
43
43
}
44
44
```
45
-
Thereway, we reduce the coupling **XPTOEmail** object has to the **Client** object.
45
+
This way, we reduce the coupling **XPTOEmail** object has to the **Client** object.
46
46
47
47
We still have a problem with this implementation. Despite *cohesion*, the Client class has a dependency on an external source, and even being injected by constructor, replacing it with another email service would not be a simple task.
48
-
Our code still have coupling, but we can improve this using `interfaces`. Let's create an interface
49
-
to sign the **sendEmail** method. With this, any class that implements this interface can be injected into the class **Client**:
48
+
Our code still has coupling, but we can improve this using `interfaces`. Let's create an interface
49
+
to define a signature, or "contract" for the **sendEmail** method. With this in place, any class that implements this interface can be injected into the class **Client**:
50
50
51
51
```dart
52
52
abstract class EmailService {
@@ -170,7 +170,7 @@ We can get the asynchronous instance directly too without having to convert to a
170
170
## Auto Dispose
171
171
172
172
The lifetime of a Bind singleton ends when its module 'dies'. But there are some objects that, by default,
173
-
runs by an instance destruction routine and automatically removed from memory. Here they are:
173
+
run an instance destruction routine and are automatically removed from memory. Here they are:
174
174
175
175
- Stream/Sink (Dart Native).
176
176
- ChangeNotifier/ValueNotifier (Flutter Native).
@@ -196,24 +196,24 @@ As BLoC is based on Streams, the memory release takes effect automatically.
196
196
:::
197
197
198
198
**flutter_modular** also offers a singleton removal option from the dependency injection system
199
-
calling the **Modular.dispose**() method even with a active module:
199
+
by calling the **Modular.dispose**() method even with an active module:
200
200
201
201
```dart
202
202
Modular.dispose<MySingletonBind>();
203
203
```
204
204
205
205
## Hot Reload
206
206
207
-
The modular is hot-reload friendly, but, singleton binds they are not notified.
208
-
Use ReassembleMixin for this:
207
+
The modular is hot-reload friendly, but, singleton binds are not notified.
0 commit comments