Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zl.kou
2022-02-10 14:47:32 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
6306f6d4a53b19bdafa4d3533553008e68cdecfc
6306f6d4
1 parent
4a8b3389
fix: fix chinese translation format of state_management.md
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
20 deletions
documentation/zh_CN/state_management.md
documentation/zh_CN/state_management.md
View file @
6306f6d
...
...
@@ -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个硬币,因为只有当用户 "暂停 "到既定时间时,它才会被执行。
...
...
Please
register
or
login
to post a comment