Flutter-数据的跨层传递

对于数据的跨层传递
方案:属性传递、InheritedWidget、Notification 和 EventBus
还有个Provider

总结

首先, InheritedWidget。对于视图层级比较深的 UI 样式,直接通过属性传值的方式会导致很多中间层增加冗余属性,而使用 InheritedWidget 可以实现子 Widget 跨层共享父 Widget 的属性。需要注意的是,InheritedWidget 中的属性在子 Widget 中只能读,如果有修改的场景,我们需要把它和 StatefulWidget 中的 State 配套使用。
然后, Notification,这种由下到上传递数据的跨层共享机制。我们可以使用 NotificationListener,在父 Widget 监听来自子 Widget 的事件。
最后, EventBus,这种无需发布者与订阅者之间存在父子关系的数据同步机制。
https://pub.dev/packages/event_bus#-readme-tab-

属性传值、InheritedWidget、Notification 与 EventBus 数据传递方式对比

Flutter-数据的跨层传递