OlĂĄ queridos colegas, amantes de KotlinNo meu primeiro artigo, quero falar sobre uma biblioteca Ăștil que escrevi exclusivamente no Kotlin e a apoio e desenvolvo ativamente. Ă chamado - KDispatcher. Projetado para enviar e assinar notificaçÔes entre seus componentes de cĂłdigo. VocĂȘ pode usĂĄ-lo em qualquer projeto kotlin, seja Android, Frontend, Backend ou KotlinNative.
Principais benefĂcios:
- Assinatura de evento rĂĄpida e fĂĄcil
- A prioridade de chamadas para funçÔes de ouvinte (retornos de chamada)
- Usando as funçÔes de extensão kotlin
- Segurança da linha
Portanto, para usar esta biblioteca em seu projeto, vocĂȘ precisa conectĂĄ-la atravĂ©s do Gradle:
implementation 'com.rasalexman.kdispatcher:kdispatcher:xyz'
ou Maven:
<dependency> <groupId>com.rasalexman.kdispatcher</groupId> <artifactId>kdispatcher</artifactId> <version>xyz</version> <type>pom</type> </dependency>
Depois disso, vocĂȘ pode usar duas maneiras:
1) Chame o método de objeto:
KDispatcher.subscribe(eventName, ::listenerFunction, priority)
onde eventName Ă© o nome da string do seu evento que vocĂȘ deseja assinar; :: listenerFunction - uma função que usa um Ășnico parĂąmetro do tipo Notification e pode ter o formato
(Notification<T>)->Unit
contendo o objeto dos seus dados (data: T) e o nome do evento (eventName: String). O Ășltimo parĂąmetro opcional, priority: Int Ă© uma variĂĄvel numĂ©rica para classificar a chamada de suas funçÔes de retorno de chamada, pois vocĂȘ pode assinar vĂĄrios ouvintes para um evento de uma vez. Para passar um evento, vocĂȘ precisa chamar o mĂ©todo:
KDispatcher.call(eventName:String, data:Any)
VocĂȘ tambĂ©m pode cancelar a inscrição de ouvir eventos quando nĂŁo precisar mais deles, usando o mĂ©todo:
KDispatcher.unsubscribe(eventName:String, ::listenerFunction)
Tudo Ă© muito simples.
2) A segunda maneira Ă© implementar suas classes (a palavra certamente nĂŁo Ă© muito boa, mas espero que todos entendam) a partir da interface do IKDispatcher e vocĂȘ pode obter toda a funcionalidade da estrutura de eventos, e ainda mais, devido Ă s funçÔes de extensĂŁo kotlin. Abaixo, quero dar um pequeno exemplo de uso dessa interface:
class MainActivity : AppCompatActivity(), IKDispatcher { private val eventListenerOne = this::eventOneHandler //... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) scopeOperation() } private fun scopeOperation() { // subscribe(EVENT_CALL_ONE, 3, eventListenerOne) subscribe(EVENT_CALL_ONE, 1, ::eventListenerTwo) subscribe(EVENT_CALL_ONE, 2, MyClass::eventListenerFour) // call(EVENT_CALL_ONE, "FIRST CALL FROM KDISPATCHER") /** * lambda- */ val eventName = "LAMBDA_EVENT" subscribe<String>(eventName) { notification -> println("LAMBDA_EVENT HAS FIRED with event name ${notification.eventName} and data ${notification.data}") unsubscribe(notification.eventName) } call(eventName, "FIRST CALL CUSTOM LABDA EVENT") } fun eventOneHandler(notification:Notification<Any>) { println("eventOneHandler MY TEST IS COMING event = ${notification.eventName} AND data = ${notification.data}") } }
VocĂȘ pode encontrar um exemplo completo de uso no link
KDispatcher no githubObrigado por ler atĂ© o fim. Eu ficaria muito feliz em receber feedback e assistĂȘncia no desenvolvimento do projeto.
Desfrute de codificação na incrĂvel linguagem KOTLIN!