FWidget 用心提供精致的组件,助您构建精美的应用。
FWidget 一直致力于为开发者们精心打造易于构建精美应用的 Widget。
迄今为止,FWidget 已经收到了来自开发者们的 1215 个 Star,感谢开发者们的支持,这对 FWidget 来说至关重要。
今天,FWidget 为开发者们带来了一个全新的组件 FBroadcast,以帮助开发者们能够更轻松的构建更为复杂精美的应用。
例如,在 FWidget 的官方网站 https://fwidget.cn 中,通过 FBroadcast 很轻松的就实现了成本极低的,且易于维护的全局实时语言切换。它十分简单有效和明确!
✨ 特性
来看看 FBroadcast 为开发者提供了那些不可思议的能力支持:
-
支持发送和接收指定类型的消息
-
消息支持携带任意类型数据包
-
提供环境注册,一行代码即可移除环境内所有接收者
-
不可思议的粘性广播
-
双向通信支持
-
易于构建简单明确的局部和全局状态管理
🛸 传送区
🛸 【传送门:FBroadcast Github 主页】
📖 【传送门:FBroadcast 文档】
🍹 献给开发者的 FBroadcast
FBroadcast 是一套高效灵活的广播系统,可以帮助开发者轻松、有序的构建具有极具复杂性的关联交互和状态变化的精美应用。
FBroadcast 将为构建复杂的精美应用带来那些显而易见的改变呢?
-
Widget/模块间的完全解耦
通过 FBroadcast 高效的广播系统,开发者可以轻易的完成Widget/模块的解耦。在应用构建的时候,经常需要 Widget/模块A、B、C、… 之间根据交互操作互相变更状态或数据,开发者们不得不为此让各个Widget/模块互相依赖或者为它们建立统一的状态管理,这能解决问题,但这让构建变得麻烦,也让变更变得难以进行。
FBroadcast 通过建立起简单、有效、明确广播系统,使得在任意Widget/模块中任意时刻/位置的改变能够主动发出广播,而需要根据这些变更作出响应或更新视图的Widget/模块只需要注册相应的信息接收器,就可以在变更发生时,接收到消息,作出响应。这使得关联模块间不再需要互相依赖,或是为它们设计建立统一的状态管理器。
十分简单,轻量,和易于变更。当一个Widget/模块不在需要根据另一个Widget/模块的变更而更新时,只需移除其中的接收器即可,而不用为此而大改依赖关系或是状态管理器。
-
简单、灵活、明确、易管理
FBroadcast 为开发者提供了可以在任意时刻发送广播,和注册/移除接收器的能力,毫无约束和灵活。
广播和接收器之间通过明确的类型(字符串)来互相确认身份,指定类型的广播,只能被指定类型的接收器接收。
FBroadcast 提供了环境注册支持,开发者可以在环境解构时,通过 [unregister()] 函数一次性移除环境中的所有类型接收器,而无需记忆和关心究竟需要移除那些接收器。例如,开发者可以在 Widget 的
dispose()
中,将注册在该 Widget 中的所有接收器一次性全部移除。借助现代IDEA的能力,开发者可以为广播系统建立一张(或多张)统一的广播类型索引表,通过IDEA的引用索引,开发者可以轻松的、一目了然的看到该类型的广播在那些地方被发送过,在那些地方注册了接收器,十分易于管理和维护。而使用字符串来作为类型标识,使得开发者可以将不同类型的广播含义描述的足够清晰明白。
-
粘性广播支持
FBroadcast 提供了发送粘性广播的支持。在还没有注册任何接收器的情况下,开发者可以在事件发生时,预先发送一条粘性广播。粘性广播会被暂时滞留在广播系统中,当有接收器被注册时,即会立即广播。这有助于帮助开发者在做逻辑设计时采取更清晰有效的思路。
例如,当一个控制模块中的开关按钮被打开,而此时开关所控制的模块还没有被构建,就可以先发送一条粘性广播,在模块被构建完成注册了接收器后,就会立即接收到粘性广播而进入开启状态(这与互相依赖、定义统一状态管理或是参数传递,然后检查开关状态的思路有本质区别)。