Neste guia, vamos comparar o Flutter, um kit de ferramentas de código aberto e multiplataforma para construir IUs, com o Swift, a linguagem principal para construir aplicativos em iOS e macOS. Avaliaremos cada linguagem de programação em termos de recursos, facilidade de uso e experiência geral do desenvolvedor para a construção de aplicativos iOS. Também ofereceremos algumas orientações para ajudá-lo a escolher qual idioma aprender ou usar em um determinado projeto de desenvolvimento de aplicativo iOS.

Swift vs. Flutter: uma visão geral de alto nível

Swift é uma linguagem de programação de código aberto de uso geral desenvolvida pela Apple para iOS, desenvolvimento de aplicativos macOS, watchOS e tvOS. É uma linguagem moderna, rápida, segura e interativa fácil para iniciantes aprenderem.

Por exemplo, para enviar (imprimir) uma mensagem para o console, você simplesmente usa o método print () :

 print ("Olá, mundo!")
//exibe os caracteres"Hello World!"

E há também o Flutter , o kit de ferramentas de IU de código aberto do Google para a criação de um usuário nativo de plataforma cruzada interfaces de uma única base de código. Flutter agora suporta o desenvolvimento de aplicativos que também podem executado na web e desktop .

A estrutura Flutter é construída com Dart. Para construir aplicativos no Flutter, você deve ter algum conhecimento do Linguagem de programação Dart .

Dart é uma linguagem otimizada para o cliente para o desenvolvimento de aplicativos em qualquer plataforma. É conciso, fortemente tipado e orientado a objetos e oferece suporte a segurança nula sólida.

Configurando seu sistema para desenvolvimento iOS

Antes de começar a construir um aplicativo iOS, a configuração inicial inclui a adição de ferramentas básicas, como sistema e IDEs, para colocá-lo em funcionamento. Vamos ver como configurar seu sistema para desenvolvimento iOS usando ferramentas Flutter e nativas (Swift).

Para construir um aplicativo iOS usando Flutter, a primeira etapa é baixe o pacote de instalação e extraia o arquivo para o local desejado. Em seguida, instale Xcode . Você pode então usar qualquer IDE de sua escolha para construir seu aplicativo Flutter iOS.

Para configurar seu sistema para criar aplicativos iOS nativamente usando Swift, tudo que você precisa é um macOS e Xcode . Isso torna um pouco mais fácil configurar um ambiente de desenvolvimento iOS em Swift do que em Flutter.

Construindo um aplicativo iOS com Flutter e Swift

Agora que estamos configurados, é hora de colocar a mão na massa e começar a construir o arquivo inicial para um novo projeto com Flutter e Swift iOS.

Aplicativo de demonstração Flutter

Crie um novo aplicativo Flutter iOS executando o seguinte na linha de comando no diretório onde deseja colocar o projeto:

 vibração criar demo_flutter_app
//isso cria um novo chamado demo_flutter_app, contendo o aplicativo inicial do Flutter.
cd demo_flutter_app
//entrar no diretório demo_flutter_app
corrida vibrante
//para iniciar o aplicativo em um simulador 

Para minha demonstração, usei o IDE do Android Studio. Você pode iniciar um novo projeto iOS Flutter usando o IDE Android Studio da seguinte maneira:

Arquivo Novo projeto do Flutter , selecione Aplicativo do Flutter , insira o nome do projeto e crie o projeto.

O Flutter criará um aplicativo inicial do Flutter, conforme mostrado abaixo:

Flutter Starter App

Aplicativo de demonstração iOS nativo (Swift)

Para iniciar um novo projeto iOS usando Xcode, clique em Criar um novo projeto Xcode , selecione Aplicativo e insira o nome do projeto. Clique em Avançar e crie um projeto no diretório escolhido.

O Xcode criará um aplicativo iOS Starter que exibe “Hello World” quando executado em um simulador, conforme mostrado abaixo:

iOS Starter App

Agora que construímos nossos aplicativos iOS de exemplo básico com Flutter e Swift, vamos comparar a curva de aprendizado, o tempo de desenvolvimento, o processo de criação da IU e a experiência geral do desenvolvedor associada a cada um.

Curva de aprendizado

Ao contrário do Flutter, depois de criar um projeto no Xcode, o aplicativo inicial do Swift para iOS é leve e fácil de começar a trabalhar. Isso ocorre porque você só precisa se familiarizar com a linguagem de programação Swift, enquanto o Flutter requer uma compreensão de como escrever no Dart.

Além do mais, a Apple projetou o Swift para ser “ a primeira linguagem de programação de qualquer pessoa . ” Você também pode aproveitar SwiftUI para criar aplicativos iOS.

O principal ponto de entrada para o aplicativo iOS da Swift é Content.swift ; para Flutter, é main.dart no diretório lib.

O Flutter tem extensa documentação , que é tudo que você realmente precisa para começar a criar aplicativos iOS com o kit de ferramentas. codelabs do Google Flutter é outro ótimo recurso que permite que você obtenha seu mãos sujas com Flutter.

Mas antes de construir qualquer tipo de aplicativo com o Flutter, você precisa aprender a linguagem de programação Dart. Felizmente, há uma comunidade crescente e solidária de desenvolvedores criando novos recursos de aprendizagem o tempo todo para ajudar novos desenvolvedores do Flutter orientar-se com o Dart .

Semelhante ao Flutter, os documentos da Apple oficiais são o lugar perfeito para obter começou a aprender a construir aplicativos iOS nativos usando Swift. Os documentos também incluem instruções e guias para usar SwiftUI , uma estrutura declarativa para construir interfaces de usuário para qualquer plataforma Apple.

Quando se trata de curva de aprendizado e acessibilidade, o Swift tem uma vantagem sobre o Flutter porque, como mencionado anteriormente, você não precisa aprender uma nova linguagem de programação para construir aplicativos iOS nativos. Dito isso, graças à rica documentação e ao suporte da comunidade, tanto o Flutter quanto o Swift são relativamente fáceis de aprender.

Tempo de desenvolvimento

Nesta seção, avaliaremos o tempo que leva para desenvolver um aplicativo iOS razoavelmente padrão usando Flutter em comparação com Swift. Vamos considerar coisas como depuração e teste em nossa análise. Claro, o tempo que leva para entregar um aplicativo também depende da complexidade do projeto, o nível de habilidade do desenvolvedor e estilo de trabalho, etc.

O Dart tem suporte para compilação just-in-time e ahead-of-time, e é por isso que o Flutter oferece suporte a hot-reload com estado-atualização instantânea de UIs quando alterações são feitas no código enquanto o aplicativo ainda está em execução. Isso invariavelmente leva a uma alta velocidade do desenvolvedor.

Com a base de código única do Flutter para todos (Android e iOS), as equipes podem lançar aplicativos de plataforma cruzada dentro do prazo, reduzindo o custo de desenvolvimento de aplicativos em plataformas diferentes e acelerando o tempo de lançamento de MVP.

Embora Swift seja a linguagem nativa para o desenvolvimento de aplicativos iOS, quando alterações são feitas em um aplicativo, você precisa recarregar o aplicativo para ver as alterações.

O recarregamento do aplicativo Flutter é mais rápido graças ao hot-reload, dando a ele uma vantagem sobre o Swift no que diz respeito à velocidade do desenvolvedor e ao tempo que leva para entregar um projeto de desenvolvimento de aplicativo iOS.

Criação da interface do usuário (IU)

A seguir, examinaremos o processo de criação de uma interface de usuário para um aplicativo iOS usando Flutter e Swift. Concluiremos a comparação criando um aplicativo simples usando Swift e Flutter para demonstrar o processo associado a cada um.

Construindo uma IU com Flutter para iOS

No centro do desenvolvimento do aplicativo Flutter está widgets . Um widget é a descrição de uma parte da interface do usuário.

Flutter vem com widgets personalizáveis, como o Texto () widget , que você pode usar para criar UIs. Os widgets também têm propriedades, como plano de fundo, largura, altura, etc. Existem dois tipos de widgets: com estado e sem estado.

Com os widgets, você não precisa se preocupar em criar UIs do zero. Você pode simplesmente aproveitar as vantagens dos widgets personalizáveis ​​que o Flutter oferece.

Abaixo está um exemplo de uso do Flutter para escrever um programa Hello World:

 import'package: flutter/material.dart'; void main () {
runApp (MyApp ());
} class MyApp extends StatelessWidget {
@sobrepor
Construção de widget (contexto BuildContext) {
return MaterialApp (
título:'Hello World Demo',
casa: Scaffold (
appBar: AppBar (
título: Texto ('Olá'),
),
corpo: Centro (
filho: Texto ('Olá, Mundo'),
),
),
),
}
} 

Construindo uma IU com Swift para iOS

Com SwiftUI , você pode criar interfaces de usuário para todas as plataformas Apple. O SwiftUI usa uma abordagem de sintaxe declarativa que é fácil de ler e natural de escrever.

Abaixo está um exemplo de uso do SwiftUI para escrever um programa Hello World:

 importar SwiftUI struct ContentView: View {
var body: some View {
Texto ("Olá, mundo!")
}
} 

No final do dia, é possível criar interfaces de usuário bonitas e envolventes para aplicativos iOS usando Flutter e Swift, e ambos desfrutam do incrível suporte da comunidade. Dito isso, o Swift se destaca por sua brevidade de código em comparação com o Flutter.

Portando um aplicativo iOS nativo para Flutter

De acordo com os documentos do Flutter, é possível adicionar o Flutter a um aplicativo iOS existente. Nesta seção, mostraremos como portar um aplicativo iOS nativo para o Flutter.

Para adicionar Flutter a um aplicativo iOS, primeiro crie um módulo Flutter no diretório raiz do seu projeto.

 cd rootdir
flutter create--template module my_flutter 

Executar o comando acima no terminal faz com que o Flutter execute automaticamente o flutter pub get , que adiciona as dependências do Flutter ao arquivo my_flutter/pubspec.yaml .

Flutter Module

Observe que chamei o módulo de flutter de my_flutter1 para a demonstração acima.

Esta é a estrutura do diretório do módulo my_flutter por meio do destino documentos :

 my_flutter/
├──.ios/
│ ├── Runner.xcworkspace
│ └── Flutter/podhelper.rb
├── lib/
│ └── main.dart
├── teste/
└── pubspec.yaml 

Observe que o diretório .ios/ é uma subpasta oculta.

A próxima etapa é incorporar o módulo Flutter ao aplicativo iOS. Os documentos descrevem duas maneiras de incorporar Flutter em um aplicativo iOS:

  1. Usando o gerenciador de dependência CocoaPods e instalando o Flutter SDK
  2. Criação de estruturas para o mecanismo Flutter, código Dart compilado e Plug-ins Flutter

O método recomendado é usar o gerenciador de dependência CocoaPods, portanto, procederemos de acordo.

Supondo que você instalou o Flutter SDK , adicione um Podfile ao aplicativo. Um Podfile é uma especificação que descreve as dependências do destino de um ou mais projetos Xcode.

Para criar um Podfile, abra o terminal e o CD no diretório do projeto iOS. Em seguida, execute $ pod init no diretório do projeto.

Abra o Podfile usando um editor (eu recomendo VS Code) e cole o código abaixo:

 flutter_application_path='../my_flutter'
carregar File.join (flutter_application_path,'.ios','Flutter','podhelper.rb') 

No destino do Podfile, entre do e end , adicione o seguinte para incorporar o Flutter:

 install_all_flutter_pods (flutter_application_path) 

A seguir, execute $ pod install no terminal. Agora seu aplicativo iOS está integrado ao Flutter.

Agora você pode construir seu projeto no Xcode usando o ícone construir e executar play ou comando + B. Mas primeiro, saia do Xcode, inicie-o novamente e abra o .xcworkspace do projeto.

Seu iOS agora está adaptado para Flutter e você está pronto para começar a construir.

Conclusão

Neste guia, comparamos a experiência do desenvolvedor associada à linguagem de programação Swift para construir iOS nativo com a do Flutter, um kit de ferramentas de IU, para construir aplicativos multiplataforma (especificamente iOS).

Na minha opinião, a escolha de construir seu próximo aplicativo iOS com Flutter ou Swift depende de sua preferência e nível de conforto ao escrever em Dart vs. Swift. A vantagem óbvia de construir um aplicativo iOS com Swift deriva da linguagem de programação Swift nativa e da estrutura SwiftUI da Apple. Construir aplicativos iOS com Flutter, por outro lado, permite que você crie aplicativos iOS e Android com uma única base de código. Para obter mais informações sobre como criar aplicativos de plataforma cruzada com Flutter, consulte “ Prós e contras do desenvolvimento de aplicativos Flutter . ”

Para encerrar, vamos resumir algumas lições importantes de nossa comparação de Flutter vs. Swift para desenvolvimento iOS:

  • Para configuração, você precisa instalar o Flutter SDK e o Xcode em seu mac se quiser construir usando Swift. Para Flutter, você precisa instalar o Flutter SDK
  • O aplicativo inicial para Flutter é pesado em comparação com o aplicativo inicial para iOS, que você pode criar usando o Xcode
  • Tanto o Flutter quanto o Swift têm uma excelente documentação para desenvolvedores que desejam se atualizar com qualquer uma das plataformas. Os documentos do Flutter também abordam o desenvolvimento de aplicativos multiplataforma
  • O SwiftUI é construído sobre a arquitetura Model View ViewModel (MVVM), enquanto o Flutter pega emprestado um pouco do React em sua arquitetura declarativa
  • Você pode portar um aplicativo Swift nativo para o Flutter criando um módulo Flutter no diretório raiz do seu aplicativo iOS ou incorporando a estrutura Flutter ao aplicativo usando CocoaPods

A postagem Flutter vs. Swift para desenvolvimento iOS apareceu primeiro no LogRocket Blog .