private Task HandleTask(ToastModel model)
        {
            var taskCompletionSource = new TaskCompletionSource <bool>();

            Execute.BeginOnUIThread(() =>
            {
                var toastContainerComponent = default(ToastContainerComponent);

                var activity = _contextProvider.CurrentActivity;

                if (activity is ActivityBase activityBase)
                {
                    toastContainerComponent =
                        activityBase.ViewComponents.FirstOrDefault(x => x.Key == nameof(ToastContainerComponent)) as
                        ToastContainerComponent;
                }

                var view = toastContainerComponent == null
                    ? activity.FindViewById <ViewGroup>(Android.Resource.Id.Content).GetChildAt(0)
                    : activity.FindViewById <ViewGroup>(toastContainerComponent.ContainerId);

                if (view == null)
                {
                    taskCompletionSource.TrySetResult(false);
                    return;
                }

                var snackbar = Snackbar
                               .Make(view, model.Label, Snackbar.LengthLong)
                               .SetAction(model.CommandAction.Title, x => { model.CommandAction.Command.Execute(x); });
                var snackbarView = snackbar.View;
                snackbarView.SetBackgroundResource(_toastSettings.NotificationBgColor);
                snackbar.SetActionTextColor(snackbarView.GetColor(_toastSettings.NotificationTextColor));
                var callback = new SnackbarCallback(taskCompletionSource, model.AltCommandAction);
                snackbar.AddCallback(callback);
                snackbar.Show();
            });

            return(taskCompletionSource.Task);
        }
 public void Enqueue(ToastModel model)
 {
     _queue.Enqueue(model);
     StartHandleImp().FireAndForget(_logger);
 }