Bom dia. Existe sim um CupertinoApp
e funciona da mesma forma que o MaterialApp
. Sobre quando usar cada um, você deve usar o CupertinoApp
apenas para o iOS (você pode rodar no Android e em outras plataformas mas as fontes podem não ser renderizadas corretamente). Já o MaterialApp
pode ser usado para todas as plataformas (iOS incluso).
Dentro do MaterialApp
você pode sim colocar componentes do Cupertino
sem nenhum problema. Caso você queira que, por exemplo, um botão tenha o estilo Cupertino no iOS e Material no Android, você pode utilizar Platform.IsAndroid
ou Platform.isIOS
para saber em qual sistema está rodando. Exemplo real:
// Dentro do build do seu Widget
return Culumn(
children: [
Container(
child: Platform.isIOS
? CupertinoActivityIndicator()
: CircularProgressIndicator(),
),
]
);
Dessa forma, caso o app esteja rodando no iOS, eu recebo um indicador de progresso no estilo Cupertino. Já no Android recebo um indicador de progresso no estilo Material. Esse é um exemplo real do meu app e eu usei apenas o MaterialApp
, mesmo tendo componentes do Cupertino.
Espero ter ajudado.
Rafael.