尽可能避免这种情况。这使得这些小部件彼此依赖,并且从长远来看会使事情变得更难维护。
相反,您可以做的是让两个小部件共享一个公共
Listenable或类似的名称,例如
Stream。然后,小部件通过提交事件进行交互。
为了更容易编写,您还可以将
Listenable/
Stream与分别组合,
ValueListenableBuilder并且
StreamBuilder两者都可以为您提供监听/更新部分。
一个简单的例子
Listenable。
class MyHomePage extends StatelessWidget { final number = new ValueNotifier(0); @override Widget build(BuildContext context) { return Scaffold( body: ValueListenableBuilder<int>( valueListenable: number, builder: (context, value, child) { return Center( child: RaisedButton( onPressed: () { number.value++; }, child: MyWidget(number), ), ); }, ), ); }}class MyWidget extends StatelessWidget { final ValueListenable<int> number; MyWidget(this.number); @override Widget build(BuildContext context) { return new Text(number.value.toString()); }}请注意这里,我们如何在执行操作时自动更新UI,
number.value++而无需调用
setState。



