Olá, Charles! Tudo bem?
Você está no caminho certo com seu programa de cupons. No entanto, há um pequeno ajuste que pode ser feito para garantir que o programa funcione conforme esperado.
No seu código, a função floor() é utilizada corretamente para obter o número inteiro de cupons, mas a linha cupons.floor(); é desnecessária, pois cupons já é um inteiro após a operação (valorDaCompra / 50).floor();. Portanto, você pode remover essa linha.
Além disso, para melhorar a clareza da mensagem exibida, você pode ajustar a string de saída para algo mais completo, como "Você ganhou $cupons cupons". Vou deixar uma versão ajustada do seu código:
import 'dart:io';
void main() {
  print('Digite o valor da compra:');
  double valorDaCompra = double.parse(stdin.readLineSync()!);
  void ProgramaCupons() {
    int cupons = (valorDaCompra / 50).floor();
    print('Você ganhou $cupons cupons');
  }
  ProgramaCupons();
}
Esse ajuste deve garantir que a saída do programa esteja clara e correta. 
Espero ter ajudado!
Siga firme nos seus estudos e conte com o fórum sempre que precisar!
Abraços :)