Fala Ygor, tudo bom!
Na verdade não! Você pode criar um código só e tudo vai funcionar igual, mesmo que você use só o Material ou só o Cupertino. Pois eles são elementos visuais.
As maiores diferenças vêm beeeem mais na frente, na hora de fazer o deploy na loja, onde você precisa fazer um build para cada plataforma, e os passos são diferentes. Mas as questões visuais, ainda assim, continuarão funcionando.
Mas fica o alerta, que eu já tive que lançar um aplicativo na AppStore, e a Apple pode rejeitar seu app se você ele estiver "com muita cara de Android". Tanto a Google quanto a Apple têm guias de estilo, e às vezes a gente pode cair na armadilha de usar apenas um deles e o app ficar com aquela carona de Android/Apple.
Algumas soluções são:
- Justamente usar um código hibrido que, com a ajuda da dependencia device_info, faz com que os Widgets variem para que a aparência se adapte conforme a plataforma. Essa solução seria menos do que fazer dois códigos, mas daria algum trabalho a mais sim.
- Outra seria fazer um app que foge de quaisquer padrão, e segue seu próprio estilo de design. Um famoso que segue essa estratégia é o da NuBank.
Já a Google não parece ligar muito para isso.
Isso é tudo só sobre aparência, mas um código feito todo com Material roda sim no iOS. Salvo raríssimas exceções que podem ser resolvidas com o device_info.
No mais é isso, espero ter ajudado, e qualquer coisas estamos por aqui!