Já pensou em construir aplicativos que utilizam realidade aumentada em dispositivos iOS?
Olá! Meu nome é Matheus, sou instrutor aqui na Alura.
Audiodescrição: Matheus é uma pessoa branca, de cabelos castanhos bem escuros, usa óculos e está de barba.
Vou apresentar o plugin ARKit. Com o ARKit, conseguimos simular a inserção de objetos 3D no nosso ambiente real. Nosso cliente, a Toca Móveis, está solicitando que coloquemos objetos 3D de mobílias para que seus clientes possam ter uma noção de como esses objetos ficariam em suas residências, como, por exemplo, em suas salas.
Vamos, por exemplo, trabalhar com uma mobília, uma mesa de centro. Nós clicaremos no botão de realidade aumentada e daremos instruções para a pessoa movimentar o celular, permitindo que ela tenha uma noção de perspectiva.
Clicando na tela, conseguimos movimentar um objeto, posicionando-o em diferentes partes, como, por exemplo, em uma mesa. Também é possível manipular esse objeto, rotacionando-o e aumentando seu tamanho. Esses objetos serão baixados da internet, de uma API. Podemos pegar todos esses objetos e modificá-los conforme a necessidade, como quando uma cliente estiver atualizando o estoque.
Para seguir com este curso, é importante já ter conhecimentos de Flutter, dominar o uso de Stateful Widgets
, saber como fazer requisições e ter noções de arquitetura, como o funcionamento do MVVM.
Este plugin é especificamente construído para iOS e não funciona em dispositivos Android. Se for necessário buscar uma solução para dispositivos Android, na plataforma também há outro curso onde é possível aprender sobre um plugin específico para Android.
Esperamos você no próximo vídeo. Até breve!
Para começar a trabalhar com o ARKit no Flutter, precisamos instalar o plugin necessário. Vamos utilizar o comando flutter pub add arkit_plugin
para adicionar o plugin ao nosso projeto. No terminal do VSCode, executamos:
flutter pub add arkit_plugin
Isso instalará a versão mais recente do plugin. No entanto, para garantir a consistência, vamos especificar a versão 1.1.2 no arquivo pubspec.yaml
:
dependencies:
arkit_plugin: ^1.1.2
Com o plugin instalado, precisamos configurar algumas permissões no arquivo info.plist
para que o aplicativo possa acessar a câmera. No arquivo info.plist
, localizado na pasta "iOS/Runner", adicionamos as seguintes linhas para descrever o uso da câmera:
<key>NSCameraUsageDescription</key>
<string>Describe why your app needs AR here.</string>
Além disso, precisamos garantir que o aplicativo seja executado em dispositivos com iOS 12 ou superior. Para isso, vamos editar o podfile
na raiz da pasta "iOS". Descomentamos a linha que define a plataforma e a ajustamos para a versão 12.0:
platform :ios, '12.0'
Após salvar essas alterações, navegamos para a pasta "iOS" e executamos o comando pod install
para instalar as dependências necessárias:
cd ios
pod install
Agora que as configurações estão prontas, podemos começar a desenvolver nosso aplicativo AR. Vamos criar uma nova tela para exibir a realidade aumentada. No VSCode, dentro da pasta lib/ui/ar
, criamos um arquivo chamado ar_screen.dart
. Este arquivo conterá nosso StatefulWidget
para a tela de AR.
Utilizamos o atalho do VSCode para criar um StatefulWidget
:
import 'package:flutter/material.dart';
class ArScreen extends StatefulWidget {
const ArScreen({super.key});
@override
State<ArScreen> createState() => _ArScreenState();
}
Agora, vamos construir o layout da tela utilizando um Scaffold
e o ARKitSceneView
:
import 'package:arkit_plugin/arkit_plugin.dart';
import 'package:vector_math/vector_math_64.dart';
class _ArScreenState extends State<ArScreen> {
late ARKitController arkitController;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('ARKit in Flutter')),
body: ARKitSceneView(onARKitViewCreated: onARKitViewCreated),
);
}
void onARKitViewCreated(ARKitController arkitController) {
this.arkitController = arkitController;
final node = ARKitNode(
geometry: ARKitSphere(radius: 0.1),
position: Vector3(0, 0, -0.5),
);
this.arkitController.add(node);
}
}
Com a tela de AR configurada, precisamos garantir que ela seja acessível a partir da tela de permissão. No arquivo permission_screen.dart
, modificamos o botão para navegar para a ArScreen
após a permissão ser concedida:
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => ArScreen()));
},
Após salvar todas as alterações, executamos novamente o pod install
para garantir que todas as dependências estejam atualizadas:
pod install
Com o aplicativo configurado e as permissões concedidas, ao clicar no botão de AR, a tela de AR será exibida. Após permitir o acesso à câmera, uma esfera aparecerá na tela, e ao mover o celular, podemos visualizar a esfera em realidade aumentada. Este é nosso primeiro contato com AR no Flutter.
Para entender melhor como integrar a Realidade Aumentada (AR) em nosso aplicativo Flutter, vamos explorar o código que criamos e colamos no editor VS Code
. Começamos com a criação de um StatefulWidget
, que é essencial para gerenciar o estado da nossa aplicação de AR.
Primeiro, importamos os pacotes necessários para trabalhar com AR e Flutter:
import 'package:vector_math/vector_math_64.dart';
import 'package:arkit_plugin/arkit_plugin.dart';
import 'package:flutter/material.dart';
Criamos a classe ArScreen
, que é um StatefulWidget
. Isso nos permite gerenciar o estado da cena de AR:
class ArScreen extends StatefulWidget {
const ArScreen({super.key});
@override
State<ArScreen> createState() => _ArScreenState();
}
Dentro do State
, declaramos um ARKitController
como late
, indicando que ele será inicializado posteriormente:
class _ArScreenState extends State<ArScreen> {
late ARKitController arkitController;
No método build
, configuramos a interface do usuário com um Scaffold
que contém um ARKitSceneView
. Este é o componente que renderiza a cena de AR:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('ARKit in Flutter')),
body: ARKitSceneView(onARKitViewCreated: onARKitViewCreated),
);
}
A função onARKitViewCreated
é chamada quando a cena de AR é criada. Aqui, atribuímos o ARKitController
e adicionamos um Node
à cena:
void onARKitViewCreated(ARKitController arkitController) {
this.arkitController = arkitController;
final node = ARKitNode(
geometry: ARKitSphere(radius: 0.1), position: Vector3(0, 0, -0.5));
this.arkitController.add(node);
}
O Node
que criamos é uma esfera, definida por ARKitSphere
, com um raio de 0.1. A posição é especificada por um vetor 3D, Vector3(0, 0, -0.5)
, que coloca a esfera um pouco afastada do ponto inicial da cena:
final node = ARKitNode(
geometry: ARKitSphere(radius: 0.1), position: Vector3(0, 0, -0.5));
Finalmente, para garantir que a cena de AR seja corretamente finalizada quando a tela for fechada, implementamos o método dispose
. Isso é crucial para liberar recursos e evitar problemas de sobrescrita ao criar novas cenas:
@override
void dispose() {
arkitController.dispose();
super.dispose();
}
Com isso, temos uma configuração básica de AR em Flutter, onde uma esfera é renderizada em uma cena de AR. Podemos expandir essa configuração adicionando mais Nodes
ou alterando as propriedades dos existentes para criar experiências de AR mais complexas.
O curso Flutter: integrando ARKit possui 104 minutos de vídeos, em um total de 45 atividades. Gostou? Conheça nossos outros cursos de Flutter em Mobile, ou leia nossos artigos de Mobile.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.