Dart作为一个现代化的编程语言,吸收了很多语言的特点,特别是响应式编程的风格。 通过Dart提供的Stream机制,Flutter可以很轻松的构建响应式的编程方式,同时也让跨页面、跨Widget的数据管理问题迎刃而解。 Flutter的响应式编程,具有下面几个特点。 数据的管理,围绕Stream进行,通过Stream的sink和listen,来进行数据的管理 Widget发出Stream后,无需感知外界的影响,同样的,Widget在listen Stream时,只需要根据数据的改变来构建UI Widget之间不再耦合,通过Stream管道获取数据,互相无依赖 借助Flutter的这个特性,Google在数据管理之路上提出了BLoC模式。 BLoC模式由Paolo Soares和Cong Hui设计,并谷歌在2018的DartConf首次提出,全称Business Logic Component。 在BLoC模式下,Widget与Data彻底解耦: App的业务逻辑处理都在BLoC中 Widget通过Sink向BLoC发送数据 BLoC通过Stream通知Widget重建UI 这其实有点类似MVP、MVC模式,BLoC模式将整个App分为三层,Data Layer、BLoC Layer、UI Layer,Data