String input = "you can cage a swallow can't you?";
bool hasPunct = ["?", "!", "."].firstWhereOrNull((punct) => punct == input.substring(input.length - 1, input.length)) != null;
print(
"${[for (int i = 0; i < (hasPunct ? input.substring(0, input.length - 1).split(" ").length : input.split(" ").length); i++) (hasPunct ? input.substring(0, input.length - 1).split(" ") : input.split(" ")).reversed.toList()[i]].join(" ")}${hasPunct ? input[input.length - 1] : ""}",
);