Introdução
O Flutter, desenvolvido pelo Google, é um framework de UI que permite desenvolver aplicativos multiplataforma com uma única base de código. Com o uso do Dart, a linguagem de programação por trás do Flutter, os desenvolvedores podem criar aplicações modernas e reativas com facilidade. Este tutorial é direcionado a desenvolvedores que estão começando com Flutter e Dart, e tem como objetivo não apenas guiá-los na criação de um aplicativo multiplataforma, mas também na implementação de testes automatizados e integração contínua para garantir a qualidade e a eficácia de suas aplicações ao longo do ciclo de vida do desenvolvimento. Você aprenderá as melhores práticas e padrões de codificação, além de configurar o ambiente necessário para o desenvolvimento, o que permitirá uma abordagem mais estratégica em relação ao desenvolvimento de software.
Etapas
Configuração do Ambiente de Desenvolvimento
Antes de começar a desenvolver em Flutter, você precisará configurar corretamente seu ambiente de desenvolvimento. Isso inclui a instalação do Flutter SDK e do Dart SDK, além de um IDE como o Visual Studio Code ou Android Studio. Siga as instruções na documentação oficial do Flutter para baixar e instalar essas ferramentas.
commands# Baixe o Flutter SDK
https://flutter.dev/docs/get-started/install
# Adicione Flutter ao PATH
export PATH="$PATH:`pwd`/flutter/bin"Criação de um Novo Projeto Flutter
Uma vez que o ambiente esteja configurado, você pode criar um novo projeto Flutter. Abra seu terminal ou prompt de comando e execute o comando abaixo. Isso criará uma nova pasta com um aplicativo Flutter básico pré-configurado.
commandsflutter create nome_do_projeto
cd nome_do_projetoEstrutura do Projeto
Após a criação do projeto, observe a estrutura de diretórios. Os arquivos principais encontram-se na pasta `lib`, que contém o arquivo `main.dart`. Neste arquivo, você encontrará o ponto de entrada para sua aplicação Flutter. Edite esse arquivo para começar a desenvolver sua interface.
main.dartimport 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Meu Aplicativo Flutter', home: Scaffold( appBar: AppBar( title: Text('Olá Flutter'), ), body: Center( child: Text('Bem-vindo ao Flutter!'), ), ), ); } }
Adicionando Dependências
Neste passo, você pode adicionar dependências ao seu projeto. Abra o arquivo `pubspec.yaml` e adicione as dependências necessárias, como `http`, `provider` ou `flutter_test` para testes automatizados.
pubspec.yamldependencies: flutter: sdk: flutter http: ^0.13.3 provider: ^5.0.0 dev_dependencies: flutter_test: sdk: flutter
Criando uma Página Simples
Crie uma nova página chamada `home.dart` na pasta `lib` e implemente uma interface simples. Isso permitirá que você pratique a criação de widgets e a navegação entre páginas.
home.dartimport 'package:flutter/material.dart'; class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Home'), ), body: Center( child: Text('Página Inicial'), ), ); } }
Implementando Navegação
Modifique o arquivo `main.dart` para adicionar a navegação para a nova página que você criou. Isso pode ser feito utilizando o método `Navigator.push`.
main.dartimport 'package:flutter/material.dart'; import 'home.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Meu Aplicativo Flutter', home: Scaffold( appBar: AppBar( title: Text('Olá Flutter'), ), body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => HomePage()), ); }, child: Text('Ir para Home'), ), ), ), ); } }
Criando Testes Automatizados
Implemente testes para a sua aplicação usando o pacote `flutter_test`. Crie um arquivo de teste em `test/widget_test.dart` e escreva um teste para verificar se a página inicial é exibida corretamente.
widget_test.dartimport 'package:flutter_test/flutter_test.dart'; import 'package:seu_projeto/main.dart'; void main() { testWidgets('Verifica se o botão está presente', (WidgetTester tester) async { await tester.pumpWidget(MyApp()); expect(find.text('Ir para Home'), findsOneWidget); }); }
Executando Testes
Após a implementação dos testes, execute-os utilizando o comando abaixo. Isso garantirá que sua aplicação esteja funcionando como esperado antes de avançar para a integração contínua.
commandsflutter test
Configuração de Integração Contínua
Para configurar a integração contínua, utilize uma plataforma como GitHub Actions ou GitLab CI. Crie um arquivo de configuração (por exemplo, `.github/workflows/ci.yml`) que execute os testes sempre que houver um push ou uma pull request.
ci.ymlname: CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Flutter uses: subosito/flutter-action@v1 with: flutter-version: 'latest' - name: Run Tests run: flutter test
Executando o Aplicativo
Finalmente, você pode executar seu aplicativo Flutter em um emulador ou dispositivo físico. Use o comando abaixo para iniciar o aplicativo.
commandsflutter run
Conclusão
Neste tutorial, exploramos o Flutter e Dart, criando um aplicativo simples e configurando testes automatizados e integração contínua. Através de uma abordagem passo a passo, você aprendeu a configurar seu ambiente, desenvolver uma aplicação básica, e garantir a qualidade do seu código com testes e um pipeline de CI. À medida que você se familiariza mais com Flutter, poderá expandir ainda mais funcionalidades e integrar serviços complexos na sua aplicação. A comunidade Flutter é vibrante e há sempre novos recursos para explorar!