Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como o mvvmcross lida com o código específico da plataforma


Como o mvvmcross lida com o código específico da plataforma


O MVVMCROSS foi projetado para lidar com o código específico da plataforma com eficiência, separando a lógica do aplicativo em duas partes principais: um projeto principal e projetos específicos da plataforma. O projeto principal, normalmente uma biblioteca padrão .NET, contém a lógica de negócios, modelos de visualização, modelos e interfaces para serviços específicos da plataforma. Isso permite o compartilhamento máximo de códigos em diferentes plataformas como Android, iOS e Windows.

Projetos específicos da plataforma

Cada projeto específico da plataforma (por exemplo, xamarin.android, xamarin.ios) contém a interface do usuário e a implementação de serviços específicos da plataforma. Esses projetos são responsáveis ​​por inicializar a estrutura MVVMCROSS e registrar serviços específicos da plataforma usando a classe de configuração. A classe de configuração atua como um bootstrapper para o MVVMCROSS, permitindo que os desenvolvedores personalizem o comportamento da estrutura para cada plataforma.

Inversão de controle (IOC) e injeção de dependência

O MVVMCROSS usa uma inversão de contêiner de controle (IOC) para gerenciar dependências em todo o aplicativo. Isso permite que os serviços específicos da plataforma sejam registrados e injetados na lógica do projeto principal. Por exemplo, se um aplicativo precisar acessar os serviços de localização do GPS, o serviço GPS poderá ser registrado na classe de configuração específico da plataforma e depois injetado nos modelos de exibição ou em outras partes do projeto principal.

Comportamento da plataforma de personalização

Os desenvolvedores podem personalizar o comportamento específico da plataforma, substituindo métodos na classe de configuração. Por exemplo, no Android, você pode substituir os métodos em `mvxandroidsetup` para registrar serviços específicos para Android ou lidar com eventos do ciclo de vida específicos do Android. Da mesma forma, no iOS, você usaria o `mvxioSossetup` para lidar com a inicialização e registro de serviço específicos para iOS.

Visualize os apresentadores

O MVVMcross também fornece apresentadores de exibição, responsáveis ​​por decidir como as visualizações são apresentadas em cada plataforma. Isso permite a personalização da lógica de apresentação da interface do usuário, como mostrar as visualizações modalmente ou como parte de uma pilha de navegação, dependendo das convenções da plataforma.

plugins e extensões

O MVVMcross oferece uma estrutura de plug-in que permite que os desenvolvedores integrem facilmente plugins de terceiros para funcionalidades comuns, como localização, sensores e muito mais. Esses plugins podem ser usados ​​em várias plataformas, reduzindo ainda mais a necessidade de código específico da plataforma.

Em resumo, o MVVMcross lida com o código específico da plataforma, fornecendo uma abordagem estruturada para separar a lógica compartilhada das implementações específicas da plataforma. Ele usa o IOC e a injeção de dependência para gerenciar os serviços da plataforma, permite a personalização através da classe de configuração e suporta plugins para estender a funcionalidade entre as plataformas.

Citações:
[1] https://github.com/mvvmcross/mvvmcross
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specific-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup