Issues with Saving Dynamic Metabox

I too have come across this strange issue, I am not sure why $post_id doesn’t contain the post id. Please try the below snippet and this would work

Use the global $post and use $post->ID in update_post_meta

add_action( 'save_post', 'save_TodoList' );
/* When the post is saved, saves our custom data */
function save_TodoList() {
    global $post;

    // verify if this is an auto save routine. 
    // If it is our form has not been submitted, so we dont want to do anything
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return;

    // OK, we're authenticated: we need to find and save the data

    $TodoList = $_POST['todotitle'];

    update_post_meta($post->ID,'todotitle', $TodoList); 
}