CrossPlatformLiveData.iOS 1.0.2

Base iOS classes for CrossPlatformLiveData

Install-Package CrossPlatformLiveData.iOS -Version 1.0.2
dotnet add package CrossPlatformLiveData.iOS --version 1.0.2
<PackageReference Include="CrossPlatformLiveData.iOS" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CrossPlatformLiveData.iOS --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

CrossPlatformLiveData

Android LiveData inspired .NET implementation - lifecycle aware rx streams

Build Status
Nuget

CrossPlatformLiveData is a C# library inspired by Android Jetpack LiveData, intended for platform independent use with Xamarin and other cross platform frameworks.

CrossPlatformLiveData is a light weight solution to effective implementation of MVVM architecture pattern.

Features:

  • Rx stream with UI lifecycle awareness,
  • Last value cache - state preservation,
  • Everything that you need to implement MVVM pattern

CrossPlatformLiveData - MVVM pattern

Installation

CrossPlatformLiveData.Android provides base UI classes with LifecycleManger linked to lifecycle events:
LiveDataActivity, LiveDataAppCompatActivity, LiveDataAppCompatDialogFragment, LiveDataFragment, LiveDataFragmentActivity, LiveDataSupportDialogFragment, LiveDataSupportFragment

CrossPlatformLiveData.iOS provides base UI classes with LifecycleManger linked to lifecycle events:
LiveDataViewController

For other platforms all you need to do is provide LifecycleManger with lifecyle events when they occur, implementation should be self explanatory.

Usage

Logic/Core:

Add LiveData fields in ViewModel/Presenter class:

public ILiveData<string> SampleLiveData { get; } = new LiveData<string>();

Post new value to LiveData:

SampleLiveData.PostValue("Hello World!");

UI:

Observe LiveData streams with LifecycleManager

viewModel.SampleLiveData.Observe(LifecycleManager, OnNextSample, e => {//handle error here}));
private void OnNextSample(string newText)
{
	someTextView.Text = newText;
}

RxWrapper (Optional)

Optionally you can use RxWrapper template class that reduces boilerplate code by bundling value, request status, and exception in single model:

public ILiveData<RxWrapper<SampleResponse>> NetworkingLiveData { get; } = new LiveData<RxWrapper<SampleResponse>>();
//Notify UI that request is pending
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Pending());
//Data fetch has succeded
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Ok(model1));
//Error has occured during network call
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Error(new Exception("No network")));
private void OnNextNetworkingData(RxWrapper<SampleResponse> response)
{
	switch (response.Status)
	{
		case RxStatus.Ok:
			//Update UI on succes
			break;
		case RxStatus.Pending:
			//Show loading spinner
			break;
		case RxStatus.Error:
			//Display error alert
			break;
	}
}

TMS logo

2019 © TMS

CrossPlatformLiveData

Android LiveData inspired .NET implementation - lifecycle aware rx streams

Build Status
Nuget

CrossPlatformLiveData is a C# library inspired by Android Jetpack LiveData, intended for platform independent use with Xamarin and other cross platform frameworks.

CrossPlatformLiveData is a light weight solution to effective implementation of MVVM architecture pattern.

Features:

  • Rx stream with UI lifecycle awareness,
  • Last value cache - state preservation,
  • Everything that you need to implement MVVM pattern

CrossPlatformLiveData - MVVM pattern

Installation

CrossPlatformLiveData.Android provides base UI classes with LifecycleManger linked to lifecycle events:
LiveDataActivity, LiveDataAppCompatActivity, LiveDataAppCompatDialogFragment, LiveDataFragment, LiveDataFragmentActivity, LiveDataSupportDialogFragment, LiveDataSupportFragment

CrossPlatformLiveData.iOS provides base UI classes with LifecycleManger linked to lifecycle events:
LiveDataViewController

For other platforms all you need to do is provide LifecycleManger with lifecyle events when they occur, implementation should be self explanatory.

Usage

Logic/Core:

Add LiveData fields in ViewModel/Presenter class:

public ILiveData<string> SampleLiveData { get; } = new LiveData<string>();

Post new value to LiveData:

SampleLiveData.PostValue("Hello World!");

UI:

Observe LiveData streams with LifecycleManager

viewModel.SampleLiveData.Observe(LifecycleManager, OnNextSample, e => {//handle error here}));
private void OnNextSample(string newText)
{
	someTextView.Text = newText;
}

RxWrapper (Optional)

Optionally you can use RxWrapper template class that reduces boilerplate code by bundling value, request status, and exception in single model:

public ILiveData<RxWrapper<SampleResponse>> NetworkingLiveData { get; } = new LiveData<RxWrapper<SampleResponse>>();
//Notify UI that request is pending
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Pending());
//Data fetch has succeded
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Ok(model1));
//Error has occured during network call
NetworkingLiveData.PostValue(RxWrapper<SampleResponse>.Error(new Exception("No network")));
private void OnNextNetworkingData(RxWrapper<SampleResponse> response)
{
	switch (response.Status)
	{
		case RxStatus.Ok:
			//Update UI on succes
			break;
		case RxStatus.Pending:
			//Show loading spinner
			break;
		case RxStatus.Error:
			//Display error alert
			break;
	}
}

TMS logo

2019 © TMS

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.2 35 10/18/2019
1.0.1 56 9/11/2019