Primeiros passos com o Cloud Storage no Flutter

Com o Cloud Storage para Firebase, é possível fazer upload e compartilhar conteúdo gerado por usuários, como imagens e vídeos. Com isso, você tem os recursos para criar conteúdo de rich media nos apps. Seus dados são armazenados em um bucket do Google Cloud Storage, uma solução de armazenamento de objetos com capacidade que chega aos exabytes, além de alta disponibilidade e redundância global. Com o Cloud Storage para Firebase, o upload dos arquivos é feito com segurança e facilidade diretamente de dispositivos móveis e navegadores da Web, mesmo em redes intermitentes.

Antes de começar

  1. Conclua o guia para iniciantes de apps Flutter, se ainda não tiver feito isso. Isso inclui:

    • Como criar um projeto do Firebase.

    • Como instalar e inicializar os SDKs do Firebase para Flutter.

  2. Verifique se o projeto do Firebase está no plano de preços do Blaze de pagamento por uso. Se você ainda não conhece o Firebase e o Google Cloud, pode conferir se tem qualificação para receber um crédito de US$ 300.

Criar um bucket padrão do Cloud Storage

  1. No painel de navegação do console do Firebase, selecione Storage.

    Se o projeto ainda não estiver no plano de preços do Blaze de pagamento por uso, você vai receber uma mensagem para fazer upgrade.

  2. Clique em Começar.

  3. Selecione um local para o bucket padrão.

  4. Configure o Firebase Security Rules para o bucket padrão. Durante o desenvolvimento, avalie a possibilidade de configurar as regras para acesso público.

  5. Clique em Concluído.

Agora você pode conferir o bucket na guia Arquivos do Cloud Storage no console do Firebase. O formato de nome do bucket padrão é PROJECT_ID.firebasestorage.app.

Configurar acesso público

Com o Cloud Storage para Firebase, você tem uma linguagem de regras declarativas para definir como os dados são estruturados, indexados e quando podem ser lidos e gravados. Por padrão, o acesso de leitura e gravação do Cloud Storage é restrito aos usuários autenticados. Para iniciar sem configurar o Firebase Authentication, defina as regras para acesso público.

Fazer isso tornará o Cloud Storage disponível para todos, até para os que não usam o app. Por isso, restrinja o Cloud Storage novamente quando for configurar a autenticação.

Adicionar o SDK do Cloud Storage ao seu app

  1. Na raiz do seu projeto do Flutter, execute o seguinte comando para instalar o plug-in:

    flutter pub add firebase_storage
    
  2. Após a conclusão, recrie seu aplicativo do Flutter:

    flutter run
    
  3. Importe o plug-in no código Dart:

    import 'package:firebase_storage/firebase_storage.dart';
    

Configurar o Cloud Storage

  1. Execute flutterfire configure no diretório do projeto do Flutter. Isso atualiza o arquivo de configuração do Firebase (firebase_options.dart) na base de código do app para que ele tenha o nome do bucket Cloud Storage padrão.

  2. Acesse o bucket do Cloud Storage criando uma instância de FirebaseStorage:

    final storage = FirebaseStorage.instance;
    
    // Alternatively, explicitly specify the bucket name URL.
    // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
    

Tudo pronto para usar o Cloud Storage.

Próxima etapa? Aprenda a criar uma referência do Cloud Storage.

Configuração avançada

Há alguns casos de uso que exigem configuração adicional:

O primeiro caso de uso é perfeito para quem tem usuários em todo o mundo e quer armazenar os dados perto deles. Por exemplo, para armazenar os dados dos usuários dos EUA, da Europa e da Ásia, crie buckets nessas regiões para reduzir a latência.

O segundo caso de uso é útil quando você tem dados com diferentes padrões de acesso. Por exemplo, configure um bucket regional ou multirregional que armazene imagens ou outros conteúdos acessados frequentemente e um bucket nearline ou coldline que armazene backups de usuários ou outros conteúdos pouco acessados.

Em qualquer um desses casos de uso, você precisará usar vários buckets do Cloud Storage.

O terceiro caso de uso é útil ao criar um app, como o Google Drive, em que os usuários têm diversas contas conectadas. Por exemplo, uma conta pessoal e uma conta corporativa. Para autenticar cada conta adicional, use uma instância de um app personalizado do Firebase.

Usar vários buckets do Cloud Storage

Para usar um bucket do Cloud Storage diferente do padrão fornecido acima ou vários buckets em um único app, crie uma instância de FirebaseStorage que faça referência ao seu bucket personalizado:

// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");

Trabalhar com buckets importados

Ao importar um bucket do Cloud Storage para o Firebase, é preciso conceder ao Firebase acesso a esses arquivos com a ferramenta gsutil inclusa no SDK Google Cloud:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://YOUR-CLOUD-STORAGE-BUCKET

Você encontra o número do projeto conforme descrito na introdução a projetos do Firebase.

Isso não afeta os buckets recém-criados, porque eles têm o controle de acesso padrão, que autoriza o Firebase. Essa é uma medida temporária e será realizada automaticamente no futuro.

Usar um app personalizado do Firebase

Para desenvolver um app mais complexo usando um FirebaseApp personalizado, crie uma instância de FirebaseStorage inicializada com o app:

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

Próximas etapas