首页 > 解决方案 > Flutter Application 中的 Ephemeral state 和 App state 是什么?

问题描述

我想知道 Flutter Application 中 Ephemeral state 和 App state 的区别。有没有简单的例子来掌握它。

标签: flutterdart

解决方案


有 02 种类型的小部件。

    1.StatelessWidget
    2.StatefulWidget

1.StatelessWidget - 这个小部件只有一个构建方法。(它返回子小部件)。

2.StateFulWidget - 这个小部件有一个构建方法(子小部件),这个构建方法
使用状态对象作为它的一部分。

(这意味着,在有状态的小部件中 UI = 构建方法 + 状态)。这张图片表明

现在我想你会知道有状态的小部件,它的 UI=build 方法(状态)。

什么是状态

状态是构建方法用作其小部件树的一部分的任何数据。


什么是 Ephemeral 状态和 App 状态

1- 短暂状态- 当您的状态变量在有状态小部件内部时,它被称为短暂状态。

在该代码下方显示短暂状态(这里_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- 应用程序状态- 当您的状态变量在有状态小部件之外时,它被称为应用程序状态。(因为该状态被许多小部件使用)

要管理应用程序状态,您必须使用状态管理解决方案(继承的小部件或第三方库)。下面的代码显示了如何使用 Cubit 状态管理库管理计数器 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

推荐阅读