How to create multiple screens within a while?

I’m using littleLVGL and I’m having some difficulties, I’m using two screens to alternate as soon as I press a button.

However, when I go to switch screens between one and the other there are some problems:

  • When calling the first screen, the next screen returns from the application “out of nowhere”.
  • I can’t call the same screen more than once.

My code is this:

First Page:

int create_page1(page_t page1, float * create_set_value)
{
    lv_obj_t * parent = lv_obj_create(NULL, NULL);
    lv_scr_load(parent);

    layout_small(parent, page1.title_text, page1.title_font_type, page1.page_color, page1.title_color);


    int peKey = KEY_NONE;

    while(1)
    {
        lv_task_handler();
        usleep(100);

        Get_Key ( &peKey, 10, false);

        if(peKey ==  KEY_ENTER)
        {
            lv_obj_clean(parent);
            *create_set_value = set_value;
            return 0;
        }
        if(peKey == KEY_CANCEL)
        {
            lv_obj_clean(parent);
            return -1;
        }
    }
}

Second Page:

void full_screen(void)
{
    lv_obj_t * parent = lv_obj_create(NULL, NULL);
    lv_scr_load(parent);

    // Title bar
    obj_title_bar = lv_obj_create(parent, NULL);

    create_screen_full(parent);
    
    Key = KEY_NONE;
    Get_Key ( &peKey, 10, true);

    while(1)
    {
        lv_task_handler();
        usleep(100);
        Get_Key ( &peKey, 10, false);

        if(peKey == KEY_ENTER)
        {
            lv_obj_clean(parent);
            return;
        }
    }
}

try lv_obj_del(patern) and i think needed renamed variable, for example first second or read this post Unresponsive screen