【发布时间】:2020-05-31 10:03:10
【问题描述】:
我想了解一下 Flutter Application 中 Ephemeral state 和 App state 的区别。有没有简单的例子来掌握它。
【问题讨论】:
我想了解一下 Flutter Application 中 Ephemeral state 和 App state 的区别。有没有简单的例子来掌握它。
【问题讨论】:
小部件有 02 种类型。
1.StatelessWidget
2.StatefulWidget
1.StatelessWidget - 这个小部件只有一个构建方法。(它返回子小部件)。
2.StateFulWidget - 此小部件具有构建方法(子小部件)和 此构建方法
使用状态对象作为它的一部分。
(这意味着,在有状态的小部件中 UI = 构建方法 + 状态)。this image shows that
什么是状态
State 是 build 方法使用的任何数据,作为其小部件树的一部分。
什么是临时状态和应用状态
1- 短暂状态 - 当您的状态变量在 Stateful 小部件内部时,称为短暂状态。
下面的代码显示了短暂的状态(这里 _counter 变量是状态)
Note -: ephemeral state is always place inside the *State class*
class Counter extends StatefulWidget {
@override
_CounterState createState() => _CounterState();
}
class _CounterState extends State<Counter> {
int _counter = 0;
void _increment() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
RaisedButton(
onPressed: _increment,
child: Text('Increment'),
),
Text('Count: $_counter'),
],
);
}
}
2- App State - 当您的状态变量位于 Stateful 小部件之外时,它称为 App 状态。 (因为该状态被许多小部件使用)
要管理应用程序状态,您必须使用状态管理解决方案(继承的小部件或第三方库)。下面的代码展示了如何使用 Cubit 状态管理库来管理 counter value(int)。
class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
void increment() => emit(state + 1);
}
~ 管理临时状态只能使用 setState 方法。
~ 但是管理应用状态有很多方法。其中一些是
1.Inherited Widget (“Flutter’s Monad”)
2.Scoped model
3.Provider
4.Bloc / cubit
5.Riverpod
6.Mobx
7.Binder
8.Redux
【讨论】: