aumentando reaproveitamento de código com mvvmcross
TRANSCRIPT
w w w. l a m b d a 3 . c o m .b r
Aumentando reaproveitamento de código no Xamarin com MvvmCross
Mahmoud Ali – Desenvolvedor@akamud
Xamarin’s Unique Approach
Shared C# codebase • 100% native API access • High performance
iOS C# UI
Windows C# UIAndroid C# UI
Shared C# Mobile
Windows APIs
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
iOS – 100% API Coverage
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Android – 100% API Coverage
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Native Performance
• Xamarin.iOS faz compilação Ahead of Time (AOT) em todo o código para produzir um binário ARM para a App Store da Apple.
• Xamarin.Android se aproveita dos benefícios da compilação Just In Time (JIT) no Android.
Tudo que você consegue fazer com Objective-C, Swift, ou Javapode ser feito em C# e Visual Studio com Xamarin
C# Backend Compartilhado
PlatformSpecific Code
UI+APIs UI + APIsUI + APIs
BatteryGPSLightsNotificationsSettingsText To Speech
BatteryGPSLightsNotificationsSettingsText To Speech
BatteryGPSLightsNotificationsSettingsText To Speech
Dem
oAplicativo Xamarin
Padrão Mvvm
Mvvm no Xamarin
MvvmCross• Cross-platform• Suporte para todas as grandes plataformas (iOS, Android, UWP, etc.)• Open Source• Comunidade forte• “Convention over configuration”• Usado pos grandes empresas: Microsoft, Xamarin, Nokia, Olo
Plataformas suportadas• iOS• Android• UWP• tvOS• Google Wear• Mac• iWatchE mais...
Recursos• Arquitetura flexível• PCL• Inversão de Controle• Injeção de dependência• Bindings• Converters• Testável• Plugins
Padrão Mvvm para Xamarin• Binding One-way e Two-way• Amarração das Views com ViewModels por convenção• FirstView <-> FirstViewModel
• Navegação entre telas automaticamente feita pela ViewModel• ShowViewModel<ViewModelType>()• Close()• Funciona com parâmetros!
Plugins• Accelerometer• DownloadCache• Email• File• Localization• Location• SQLite
https://github.com/MvvmCross/MvvmCross-Plugins
Dem
oMvvmCrossMenos código repetido
Links• https://mvvmcross.com/• https://mvvmcross.com/docs/• https://github.com/mvvmcross/mvvmcross• https://github.com/MvvmCross/MvvmCross-Plugins• https://
github.com/MvvmCross/MvvmCross/wiki/N-1-Videos-Of-MvvmCross