Jonny Borges
Committed by GitHub

Merge pull request #2181 from KouYiGuo/master

fix: fix Chinese translation format of state_management.md
... ... @@ -59,11 +59,11 @@ var name = 'Jonatas Borges'.obs;
就这么简单!
我们把这个reactive-".obs"(ervables)变量称为_Rx_
我们把这个reactive-".obs"(ervables)变量称为 _Rx_
我们做了什么?我们创建了一个 "Stream "的 "String",分配了初始值 "Jonatas Borges",我们通知所有使用 "Jonatas Borges "的widgets,它们现在 "属于 "这个变量,当_Rx_的值发生变化时,它们也要随之改变。
这就是GetX**的**魔力,这要归功于Dart的能力。
这就是GetX **的** 魔力,这要归功于Dart的能力。
但是,我们知道,一个`Widget`只有在函数里面才能改变,因为静态类没有 "自动改变 "的能力。
... ... @@ -80,15 +80,15 @@ var name = 'Jonatas Borges'.obs;
Obx (() => Text (controller.name));
```
_你只需记住 `Obx(()=>`
你只需记住 `Obx(()=>`
你只需将Widget通过一个箭头函数传递给 `Obx()`(_Rx_的 "观察者")。
你只需将Widget通过一个箭头函数传递给 `Obx()`( _Rx_ 的 "观察者")。
`Obx`是相当聪明的,只有当`controller.name`的值发生变化时才会改变。
如果`name`是`"John"`,你把它改成了`"John"`(`name.value="John"`),因为它和之前的`value`是一样的,所以界面上不会有任何变化,而`Obx`为了节省资源,会直接忽略新的值,不重建Widget。**这是不是很神奇**
> 那么,如果我在一个`Obx`里有5个_Rx_(可观察的)变量呢?
> 那么,如果我在一个`Obx`里有5个 _Rx_ (可观察的)变量呢?
当其中**任何**一个变量发生变化时,它就会更新。
... ... @@ -96,7 +96,7 @@ _你只需记住 `Obx(()=>`
不会,只会更新使用那个 _Rx_ 变量的**特定 Widget**
所以,只有当_Rx_变量的值发生变化时,**GetX**才会更新界面。
所以,只有当 _Rx_ 变量的值发生变化时,**GetX**才会更新界面。
```
final isOpen = false.obs;
... ... @@ -114,13 +114,13 @@ void onButtonTap() => isOpen.value=false;
如果你需要一个**强大的**状态管理器,用**GetX**是不会错的。
它不能和变量一起工作,除了__flows__,它里面的东西本质都是`Streams`
你可以将_rxDart_与它结合使用,因为所有的东西都是`Streams`
你可以监听每个"_Rx_变量 "的 "事件"。
它不能和变量一起工作,除了 __flows__ ,它里面的东西本质都是`Streams`
你可以将 _rxDart_ 与它结合使用,因为所有的东西都是`Streams`
你可以监听每个" _Rx_ 变量 "的 "事件"。
因为里面的所有东西都是 "Streams"。
这实际上是一种_BLoC_方法,比_MobX_更容易,而且没有代码生成器或装饰。
你可以把**任何东西**变成一个_"Observable"_,只需要在它末尾加上`.obs`
这实际上是一种 _BLoC_ 方法,比 _MobX_ 更容易,而且没有代码生成器或装饰。
你可以把**任何东西**变成一个 _"Observable"_ ,只需要在它末尾加上`.obs`
### 最高性能
... ... @@ -129,8 +129,8 @@ void onButtonTap() => isOpen.value=false;
如果你的应用程序中遇到错误,并发送重复的状态变更,**GetX**将确保它不会崩溃。
使用**GetX**,只有当`value`改变时,状态才会改变。
这就是**GetX**,和使用MobX_的_`computed`的主要区别。
当加入两个__observable__,其中一个发生变化时,该_observable_的监听器也会发生变化。
这就是**GetX**,和使用MobX _的_ `computed`的主要区别。
当加入两个 __observable__ ,其中一个发生变化时,该 _observable_ 的监听器也会发生变化。
使用**GetX**,如果你连接了两个变量,`GetX()`(类似于`Observer()`)只有在它的状态真正变化时才会重建。
... ... @@ -183,13 +183,13 @@ final user = User().obs;
##### 有一个反应的状态,很容易。
我们知道,_Dart_现在正朝着_null safety_的方向发展。
为了做好准备,从现在开始,你应该总是用一个**初始值**来开始你的_Rx_变量。
我们知道, _Dart_ 现在正朝着 _null safety_ 的方向发展。
为了做好准备,从现在开始,你应该总是用一个**初始值**来开始你的 _Rx_ 变量。
> 用**GetX**将一个变量转化为一个_observable_ + _initial value_是最简单,也是最实用的方法。
> 用**GetX**将一个变量转化为一个 _observable_ + _initial value_ 是最简单,也是最实用的方法。
你只需在变量的末尾添加一个"`.obs`",即可把它变成可观察的变量,
然后它的`.value`就是_初始值_)。
然后它的`.value`就是 _初始值_ )。
### 使用视图中的值
... ... @@ -411,17 +411,17 @@ interval(count1, (_) => print("interval $_"), time: Duration(seconds: 1));
所有worker都会返回一个`Worker`实例,你可以用它来取消(通过`dispose()`)worker。
- **`ever`**
每当_Rx_变量发出一个新的值时,就会被调用。
每当 _Rx_ 变量发出一个新的值时,就会被调用。
- **`everAll`**
和 "ever "很像,但它需要一个_Rx_值的 "List",每次它的变量被改变时都会被调用。就是这样。
和 "ever "很像,但它需要一个 _Rx_ 值的 "List",每次它的变量被改变时都会被调用。就是这样。
- **`once`**
'once'只在变量第一次被改变时被调用。
- **`debounce`**
debounce'在搜索函数中非常有用,你只希望API在用户完成输入时被调用。如果用户输入 "Jonny",你将在API中进行5次搜索,分别是字母J、o、n、n和y。使用Get不会发生这种情况,因为你将有一个 "debounce "Worker,它只会在输入结束时触发。
'debounce'在搜索函数中非常有用,你只希望API在用户完成输入时被调用。如果用户输入 "Jonny",你将在API中进行5次搜索,分别是字母J、o、n、n和y。使用Get不会发生这种情况,因为你将有一个 "debounce "Worker,它只会在输入结束时触发。
- **`interval`**
'interval'与debouce不同,debouce如果用户在1秒内对一个变量进行了1000次修改,他将在规定的计时器(默认为800毫秒)后只发送最后一次修改。Interval则会忽略规定时间内的所有用户操作。如果你发送事件1分钟,每秒1000个,那么当用户停止DDOS事件时,debounce将只发送最后一个事件。建议这样做是为了避免滥用,在用户可以快速点击某样东西并获得一些好处的功能中(想象一下,用户点击某样东西可以赚取硬币,如果他在同一分钟内点击300次,他就会有300个硬币,使用间隔,你可以设置时间范围为3秒,无论是点击300次或100万次,1分钟内他最多获得20个硬币)。debounce适用于防DDOS,适用于搜索等功能,每次改变onChange都会调用你的api进行查询。Debounce会等待用户停止输入名称,进行请求。如果在上面提到的投币场景中使用它,用户只会赢得1个硬币,因为只有当用户 "暂停 "到既定时间时,它才会被执行。
... ...