No lugar de P e G, coloquei 0=P e G=1 para ficar mais rápido de responder. Acho que isso resolve em Dart:

Future main() async {

//0 = P //1 = G
int funcaoRetornaStrealas(List resultado){ int quantidadeEstrelas=0; if(resultado.length<12){ return quantidadeEstrelas; } for(var i=0; i<resultado.length;i++){ if(i<10){ List listaProximos3Valores= resultado.getRange(i,i+3).toList(); if(!listaProximos3Valores.contains(0)){ quantidadeEstrelas++; resultado[i]=0; resultado[i+1]=0; resultado[i+2]=0; }

}

} return quantidadeEstrelas;

}

print(funcaoRetornaStrealas([0,1,1,1,0,0,0,0,1,1,1,0]));
}