This won't work because as you've already discovered, you can't nullify input elements in flows.
You have to split it into two flows. Split it at the step that captures the input values. So at the step where you would usually present the inputs in the UI, call your new flow from within your current one to capture the input elements or whatever you want to do there. Pass whatever you need to back to your original flow and you can call the second flow as many times as you need to capture new input elements. I use this for a user creation wizard and call my New User flow from the wizard as many times as the user wants to create more records, capturing the new values in the UI every time.
Kinda lame but it's the only way I've found to currently make it work.
In my example, I have a wizard that manages an entire entitlement process. At a step in the flow, i make a decision of whether or not i need to create a new contact. If yes, i need to capture some details in an input screen. I may need to create multiple users, so i am going to need to need to call another flow to manage the input screen since i don't want to re-present the screen again with the old contacts info still in there.
The first step in my other flow is the input screen. It then does a bunch of work to actually create a contact, but you'll get the general idea.
When you add that new flow to your current one, you can pass any attributes you need to that in the Variable Assignments section.
Every time your main flow calls the sub flow (I like to call them Worker Flows), it will present your input fields without any values in them.