About "Declaration is only valid at file scope"
The error is somewhere in your ...
— that error means that your ListViewController
class didn't get closed, so the extension is being interpreted as nested inside, like this:
class ListViewController {
...
extension ListViewController {
}
}
Find the missing closing brace and you should solve the problem.
The extension must be at the root level - don't embed them into a class or whatever.