O Google sempre se esforçou para fazer do Flutter uma ferramenta universal para a criação de interfaces atraentes que funcionem em qualquer plataforma tão rapidamente quanto os aplicativos nativos dessas plataformas. Para garantir que isso seja possível, começamos concentrando nossos esforços em plataformas móveis - Android e iOS. Como resultado, mais de 80.000 aplicativos Flutter rápidos e bonitos foram publicados no Google Play.

Com base em nossos sucessos, temos estado ocupados estendendo os recursos do Flutter para plataformas de desktop por mais de um ano - macOS, Windows e Linux. Isso se aplica a aplicativos da web e projetos de desktop tradicionais. Em particular, estamos ocupados com a refatoração séria do motor. A refatoração visa suportar o trabalho do mouse e do teclado no mesmo estilo comum em sistemas desktop, bem como o suporte para janelas que podem ser redimensionadas. Isso inclui novos recursos de interface de usuário que funcionam bem para plataformas de desktop. Isso, por exemplo, suporte para densidade de material e NavigationRail . Isso inclui experimentos de integração profunda com sistemas operacionais de desktop graças ao Dart: FFIe trabalhar com menus do sistema e caixas de diálogo padrão. Tudo isso foi feito para garantir que o Flutter seja adequado não apenas para a criação de projetos móveis, mas também para o desenvolvimento de aplicativos de desktop reais.
Há muito tempo vimos o Flutter como uma ferramenta para a criação de projetos voltados para uma ampla variedade de plataformas. No Google, a expressão dessa visão é representada por projetos como o Assistant . Agora, estamos entusiasmados em ver outras empresas lançando o suporte do Flutter para novas plataformas. Hoje, o Google e a Canonical, que mantém o Ubuntu , a distribuição Linux mais popular do mundo, têm o prazer de anunciar em conjunto uma versão alfa do Flutter para Linux.
Linux Flutter?
No ano passado, quando o Google anunciou a possibilidade de desenvolver aplicativos de desktop usando Flutter, a Canonical viu uma oportunidade atraente de fazer distribuições Linux, incluindo Ubuntu, uma plataforma de destino atraente para desenvolvedores Flutter. O Flutter está avançando rapidamente em termos de recursos de plataforma cruzada. A Canonical queria estar na vanguarda desse movimento. Ao ajudar o Flutter a oferecer suporte a aplicativos Linux, a Canonical oferece aos desenvolvedores de aplicativos Flutter um mecanismo muito fácil para publicar seu trabalho na Snap Store, uma loja de aplicativos Linux. Ao tornar o Linux a plataforma que suporta oficialmente os aplicativos Flutter, a Canonical dá aos desenvolvedores a oportunidade de apresentar seus projetos a milhões de usuários Linux e expandir o número de projetos de qualidade.disponíveis para esses usuários.
Os seguintes recursos do Flutter e do ecossistema desta estrutura parecem ser especialmente atraentes para a Canonical:
- Uma comunidade de desenvolvedores de aplicativos em rápido crescimento.
- Suporte para várias plataformas.
- A capacidade de desenvolver aplicativos nativos bem otimizados.
- Recursos comuns a estruturas de IU modernas, como suporte para widgets de layout declarativos e reativos.
- Ambiente rico de desenvolvimento de aplicativos usando VS Code, Android Studio e IntelliJ.
A postagem original do Google sobre desenvolvimento de desktop no Flutter tratava de uma versão alfa com suporte a aplicativos macOS e planos de suporte a aplicativos para Linux e Windows. A Canonical fez investimentos significativos no desenvolvimento do Flutter com uma equipe de desenvolvimento dedicada que, trabalhando com desenvolvedores no Google, visa garantir que os usuários da maioria das distribuições Linux possam desfrutar dos aplicativos Flutter da melhor maneira possível. A Canonical continuará a trabalhar com o Google para melhorar ainda mais o suporte ao Linux e manter os recursos disponíveis para aplicativos Flutter no Linux no mesmo nível do suporte para outras plataformas.
Flokk App - Prova de Flutter Ready para Desktop Development
Para mostrar que o Flutter está pronto para desenvolver aplicativos móveis, trabalhamos com os designers e desenvolvedores da gskinner para criar um aplicativo de desktop Flutter inovador e atraente. Este é o Flokk - um aplicativo real que funciona com dados reais. Em particular - com uma lista de contatos dos Contatos do Google. Aqui está um vídeo de demonstração do Flokk.
Este aplicativo permite que você gerencie seus contatos. Em particular - pesquise contatos, adicione novos contatos e edite os existentes. O Flokk também permite que você associe seus contatos às contas apropriadas do Twitter e GitHub e trabalhe com os dados dessas contas.

O Flokk Contacts é baseado no Flutter para computadores desktop.
O fato de o aplicativo poder exibir notificações do Twitter e do GitHub o transforma em algo como a rede social pessoal de um usuário. Se a rede social na qual você está interessado ainda não está integrada ao Flokk, você pode resolver este problema simplesmente enviando o PR correspondente para o repositório do projeto, uma vez que o Flokk é um projeto totalmente de código aberto .
Além de fornecer ideias inovadoras para a interação do usuário, o Flokk usa os recursos do Flutter para criar interfaces atraentes e fáceis de usar. Um exemplo de tais possibilidades é mostrado na figura a seguir. É mostrado aqui que ao mudar para o tema escuro do aplicativo, não uma simples, mas uma mudança de cor animada é realizada.

Os recursos do Flutter permitem que o Flokk forneça animações fluidas, rolagem de alto desempenho e temas fáceis de usar. A
equipe criativa por trás do Flokk é liderada por Grant Skinnerque é bem conhecido por excelentes soluções de design e ideias inovadoras de UX. Aqui está o que Grant disse sobre trabalhar com o Flutter no Linux: “Desenvolver o aplicativo Flokk Contacts acabou sendo uma tarefa muito fácil! Pudemos aplicar aqui toda a nossa experiência no desenvolvimento do Flutter e criar um aplicativo voltado para o Linux sem recorrer a nenhum truque especial. O aplicativo acabou sendo muito bom. Nós realmente gostamos de trabalhar com a equipe da Canonical. Eles estavam entusiasmados, apaixonados pelo nosso negócio e queriam tornar o Flutter melhor pensando não apenas no Linux, mas também em todas as outras plataformas. Foi um ótimo projeto e eu realmente adoro a perspectiva de desenvolver aplicativos Flutter para outros sistemas operacionais de desktop. "
Se desejar usar o Flokk em sua caixa Linux, você pode baixar a versão mais recente do aplicativo no GitHub . E se você usar o snapd, poderá baixar o Flokk na Snap Store .
Instalando Flutter no Linux
Agora que você viu quais aplicativos de desktop de qualidade podem ser criados com o Flutter, em particular os aplicativos Linux, você pode querer experimentar o Flutter em sua própria máquina Linux. Para simplificar o processo de preparação de sistemas Linux para o desenvolvimento de aplicativos Flutter tanto quanto possível, temos o prazer de anunciar que o Flutter SDK para Linux está disponível como um pacote instantâneo no Snap Store... Este pacote contém tudo que você precisa para desenvolver aplicativos Flutter usando sua distribuição Linux favorita. Dito isso, você não precisará instalar um monte de dependências de desenvolvimento. Tudo o que você precisa fazer é instalar o Flutter SDK e o pacote de snap IDE de sua escolha. Então você tem tudo de que precisa para criar, construir e publicar seus próprios aplicativos Linux.
Por exemplo, se você deseja começar a desenvolver aplicativos Flutter no Linux e gosta do Visual Studio Code, aqui está um conjunto de comandos que você precisa para executar no terminal:
$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter
Se você deseja trabalhar no Linux para criar não apenas aplicativos de desktop, mas também aplicativos móveis, pode se preparar para isso instalando o Android SDK ou Android Studio (o Android SDK já está incluído aqui). Você pode encontrar detalhes sobre o snap do Flutter SDK aqui .
Desenvolvimento de aplicativos de desktop Linux
Depois de instalar o Flutter SDK em seu computador Linux, você precisa ir para o canal
dev
ou master
atualizar o Flutter para criar aplicativos de desktop . Em seguida, você precisa ativar o suporte para aplicativos de desktop Linux:
$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop
Agora, ao criar um novo projeto Flutter, você terá um subdiretório
linux
que permite executar o aplicativo no Linux:
$ flutter create counter
$ cd counter
$ flutter run -d linux

O famoso aplicativo Flutter Counter funciona muito bem no Linux
também. Você terá um novo aplicativo Linux construído com Flutter e rodando na última versão estável do GTK +. Se você já tem um projeto Flutter que deseja equipar com suporte para Linux, depois de ativar o suporte para Linux em tais projetos, você mesmo pode adicionar o diretório ao seu projeto
linux
:
$ cd my_flutter_app
$ flutter create .
Isso criará um subdiretório com um projeto especial que é necessário para construir e executar seu aplicativo Flutter no desktop Linux.
Organizando acesso ao código Linux nativo do Flutter
Além de oferecer suporte a aplicativos de desktop escrevendo código Dart para criar widgets Flutter, seu aplicativo de desktop Linux pode acessar recursos nativos do Linux usando canais de plataforma ou Foreign Function Interface (FFI) para C / C ++ ... Ou, se preferir , você pode reutilizar o código existente que pode ser encontrado em pub.dev, no site do gerenciador de pacotes para Dart and Flutter. A maioria dos pacotes que você encontra no pub.dev são escritos em Dart puro, muitos desses pacotes funcionam bem em aplicativos Linux. Alguns pacotes, chamados de plug-ins, contêm código nativo voltado para uma plataforma específica. Como parte desta versão, publicamos três plug-ins no pub.dev que usam a funcionalidade nativa do Linux:
- url_launcher : Abre a URL em seu navegador padrão.
- shared_preferences : preferências do usuário utilizadas em várias sessões do aplicativo.
- path_provider : informações de caminho relacionadas a diretórios específicos, como o diretório para downloads, imagens e similares.
Você pode usar cada um desses plug-ins em seus aplicativos, mas eles também podem funcionar como exemplos de como você pode trabalhar com recursos nativos do Linux a partir do código Flutter. Por exemplo, aqui está o código-fonte para a implementação do plugin url_launcher.
Publicação de aplicativos na Snap Store
Para publicar seu aplicativo Flutter no Snap Store, primeiro você precisa instalar o Snapcraft, a ferramenta usada para criar e publicar aplicativos como pacotes snap:
$ sudo snap install snapcraft --classic
Para aproveitar as vantagens dos recursos do Snapcraft, você precisará criar um arquivo no diretório de projeto do aplicativo
snapcraft.yaml
. Por exemplo, qual é a aparência desse arquivo para o Flokk:
name: flokk-contacts
version: 1.0.1
summary: Flokk Contacts
description: A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.
confinement: strict
base: core18
grade: stable
apps:
flokk-contacts:
command: flokk-contacts
extensions: [flutter-master]
plugs:
- network
parts:
flokk-contacts:
source: .
plugin: flutter
flutter-target: lib/main.dart # ,
Agora, no diretório com o arquivo,
snapcraft.yaml
você pode executar o Snapcraft para criar um pacote de snap do aplicativo:
$ snapcraft
Se tudo funcionar conforme o esperado, este comando criará um arquivo no diretório de trabalho atual. Será chamado de algo assim:
flokk-contacts_1.0.1_amd64.snap
Depois de preparar sua conta para publicar aplicativos no Snap Store, você pode publicar o snap que acabou de criar:
$ snapcraft login
$ snapcraft register flokk-contacts
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge
Aqui, estamos enviando o aplicativo para a Snap Store e tentando publicá-lo no edge feed . Assim que o aplicativo for publicado neste canal, você pode instalá-lo por meio do cliente de desktop Snap Store ou usando a linha de comando:
$ snap install --edge flokk-contacts
Detalhes sobre como criar seu primeiro aplicativo e publicá-lo no Snap Store podem ser encontrados aqui .
Exemplos de aplicativos de desktop Flutter
O aplicativo Flokk é um ótimo exemplo de um projeto do mundo real para desktops Linux. Para um exemplo mais simples, dê uma olhada no aplicativo Photo Search . Ele foi criado especificamente para demonstrar os recursos do Flutter para desenvolver aplicativos de desktop.

Aplicativo de pesquisa de fotos
Este é um aplicativo simples de pesquisa de fotos online que usa vários plug-ins para acessar a funcionalidade nativa das plataformas que suporta, incluindo macOS e Linux.
Se você precisar de instruções passo a passo sobre como desenvolver aplicativos de desktop Linux, dê uma olhada neste tutorial de codelab. Ele se concentra no uso de OAuth e GraphQL para construir um cliente GitHub usando Flutter.

Cliente GitHub
Se você deseja explorar um projeto mais complexo que usa muito mais recursos do Flutter e tem alguns exemplos de código interessantes, você pode dar uma olhada no aplicativo Flutter Gallery . Foi refeito no ano passado. Ele agora suporta plataformas de desktop, além de plataformas móveis. Se você quiser ver este aplicativo em ação, pode baixá-lo na Snap Store .

O aplicativo Flutter Gallery pode ser baixado da Snap Store.
Aqui está outro aplicativo de desktop que ilustra os recursos de entretenimento do Flutter. Este é um jogo batufo multiplayercriado por Thorsten Lorenz. Este lindo jogo permite que jogadores de todo o mundo competam entre si em tempo real.

O jogo Batufo rodando em diferentes plataformas suportadas pelo Flutter
Thorsten criou este jogo com suporte para várias plataformas, incluindo - Linux, macOS, Android e iOS. Se você estiver interessado em aprender como este jogo foi desenvolvido, e se quiser acompanhar o desenvolvimento deste projeto, pode assistir a esses vídeos e dar uma olhada no repositório do projeto. No Linux, este jogo pode ser instalado na Snap Store .
Resultado
Com o lançamento da versão alfa do Flutter para Linux e graças à estreita colaboração entre o Google e a Canonical, os desenvolvedores Linux agora podem aproveitar as vantagens dos recursos do Flutter para criar aplicativos personalizados para seu sistema operacional. Tudo o que você precisa fazer é instalar o snap Flutter SDK, construir e testar o aplicativo usando o VS Code ou Android Studio e publicá-lo no Snap Store. Para notícias sobre desenvolvimento de desktop com Flutter, veja aqui . E, o que é muito, muito importante para nós, tente deixar um comentáriosobre os novos recursos do Flutter. Isso nos ajudará a tornar o suporte do Linux para aplicativos Flutter o melhor possível. Na verdade, nós nos esforçamos para conseguir o mesmo trabalhando com outras plataformas.
Flutter para Linux da equipe de desenvolvimento da Canonical é um passo gigante em direção ao nosso sonho de tornar o Flutter a estrutura de desenvolvimento de aplicativos definitiva para todas as plataformas. O fato de que os aplicativos Flutter agora podem ser desenvolvidos para a área de trabalho torna o mecanismo Flutter muito mais acessível a uma ampla variedade de dispositivos. Embora o Google não possa oferecer suporte direto a esses dispositivos, a empresa planeja continuar construindo parcerias com outras empresas e desenvolvendo o ecossistema Flutter.
Queremos ver o Flutter em todos os dispositivos que precisam de aplicativos rápidos e envolventes.
Você já tentou construir aplicativos Flutter para Linux?
