Olá  Joslaine, boa noite!!
Bom, para seguir com seu cenário podemos de modo simplificado aplicar sua regra no metodo atacar().
class Heroine {
  String nome;
  int pontosVida;
  int pontosMagia;
  double velocidade;
  double danoAtaque;
  bool? isViva;
  Heroine(
      {required this.nome, required this.pontosVida, required this.pontosMagia, required this.velocidade,required this.danoAtaque, this.isViva});
  /*recebe a vida do oponente e o dano de quem está atacando e verifica se o
    resultado dos pontos de vida menos o dano do atacante é menor ou igual a zero
  */
  void atacar(int vidaOponente, double dano) {
    if (vidaOponente - dano <= 0) {
      isViva = false;
    } else {
      isViva = true;
    }
    print("O oponente está $isViva");
    //o trecho abaixo: ${isViva! ? "vivo" : "morto"} é um if que caso isViva seja verdadeiro é exibido o texto "vivo" se não "morto"
    //print("O oponente está ${isViva! ? "vivo" : "morto"}");
  }
  void andar() {}
  void usarMagia() {}
}
No main podemos criar dois herois e utilizar seus dados no método atacar
import 'Heroine.dart';
void main(List<String> args) {
  Heroine sheHulk = Heroine(nome: 'Jennifer', pontosVida: 150, pontosMagia: 230, velocidade: 60,  danoAtaque: 120);
  Heroine spider = Heroine(nome: 'Peter Park', pontosVida: 100, pontosMagia: 50, velocidade: 230, danoAtaque: 70);
  sheHulk.atacar(spider.pontosVida, sheHulk.danoAtaque);
}
Com isso imagino que tenha te ajudado em como implementar sua ideia, lembrando que esse é só um modo e tentei usar somente o conhecimento até agora apresentado.
Bons Estudos!!!