Experimentando con las propiedades del gradiente concluyo lo siguiente:
stops define, de 0 a 1, un porcentaje del largo en que se quiere un cambio de color y requiere valores por cada color en colors. Así, esta configuración:
gradient: LinearGradient(
colors: [
Colors.red,
Colors.green,
Colors.blue
],
stops: [0.0,0.2,1],
Da este resultado (en 0 rojo, en 1/5 del ancho verde, y al final azul)
 debería quedar en toda la mitad:
 con los FractionalOffets a las propiedades begin y end.