先画个简单的 Widget Tree .. 应用的根是 App .. 它下面有个 StateManagementDemo .. 这个小部件里面用了一个 Counter ..
现在,在 Counter 里面需要的数据是通过小部件的构造函数,从 StateManagementDemo 那里直接传递过来的 .. 假设在这两个小部件之间还有一个小部件 .. 比如可能有一个 CounterWrapper .. 在这个 CounterWrapper 里面使用了 Counter ...
这样,这个 Counter 需要的数据要先从 StateManagementDemo 传递给 CounterWrapper .. 然后再由这个 CounterWrapper 传递给 Counter .. 需要一级一级往下传 ..
这种方法有个问题,就是 CounterWrapper 本身并不需要 Counter 里面的数据,但是数据还是要通过它才能传递给 Counter .. 如果应用越来越复杂,小部件树也会越来越深 .. 这样一层一层的往下传数据会非常麻烦 ..
在后面我们会介绍几个解决的方法.. 暂时先试一下一层一层越下传数据 ..
在这个示例里面 .. 可以先去掉 Counter 里的这个 Center 小部件 ..
再添加一个 StatelessWidget .. 名字是 CounterWrapper .. 里面先用一个 Center 小部件 .. 它的 child 是下面定义的这个 Counter .. 使用它的时候需要提供一个 count 还有 increaseCount ..
复制一下 Counter 里的 count,increaseCount 还有它的构造函数 ..
把它们粘贴到 CounterWrapper 里面 .. 修改一下构造函数 .. CounterWrapper ..
在 StateManagementDemo 里面 .. 可以用一下 CounterWrapper .. 使用它的时候提供一个 count 还有 increaseCount ..
这两个数据交给 CounterWrapper 以后 .. 需要再把它们交给最终需要它们的 Counter 小部件 ..
到模拟器上再试一下 .. 按一下界面上的这个 AcitonChip ... 每按一次,界面上显示的数字都会加上 1 ...