Um pacote que permite usar as Planilhas do Google como configuração remota para alterar o comportamento, configurações do seu aplicativo Dart/Flutter sem atualização.
Orientação gerada a partir de informações públicas. Apenas para referência.
dart_gsheet_remote_config permite aplicativos Flutter e Dart buscar valores de configuração do Google Sheets em tempo real, permitindo atualizações dinâmicas no comportamento do aplicativo sem a necessidade de uma nova versão. Ao tratar uma planilha do Google como fonte de configuração remota, os desenvolvedores podem ajustar recursos, flags ou configurações a qualquer momento. O pacote suporta múltiplas plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-o ideal para gerenciamento flexível e escalável de aplicativos.
Casos de uso
Alternância dinâmica de recursos
Alterações em tempo real do tema da interface
Configuração específica do ambiente
Configurações de teste A/B
Depuração e monitoramento remotos
Atualizações instantâneas do aplicativo sem implantação
Principais recursos
Google Sheets como fonte de configuração
Atualizações em tempo real da configuração
Suporte multiplataforma
Integração simples com Flutter/Dart
Acesso seguro por meio da API do Google Sheets
Gerenciamento automático de cache
Indicado para
Aplicativos que precisam de mudanças frequentes de configuração
Equipes gerenciando múltiplos ambientes
Projetos usando teste A/B
Desenvolvedores evitando envios à loja de aplicativos para pequenas alterações
Produtos que exigem iteração rápida
Considerações
Requer configuração do projeto do Google Cloud
Necessita autenticação adequada (OAuth 2.0)
Depende da conectividade de internet
Latência potencial para o carregamento inicial
Limites de taxa da API do Google Sheets
Dados sensíveis devem ser criptografados
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Dart Google Sheet Remote Config
This is a package that allows you to use Google Sheets as a remote config for changing your Dart/Flutter app's behaviors, settings,.. without updating. It is inspired by @theapache64's blog.
If you have some configs (API key, token,...) related to security, please DO NOT use this package, because it is PUBLIC and NOT SECURE.
Setup
Google Sheet
Create a Google Sheet document, make it PUBLIC & READ ONLY (If not you will get 401, in the future I will find the way to inject auth token for private sheeet) and put an easy to remember document name.
Add your data to sheet in format:
First column will be keys
Second column will be values
MUST READ: Every values in sheet is marked as String. For int, doube, bool, we should convert it to String, use TO_TEXT fomular to convert value to String type:
You can create more than 1 worksheet to manage your config better and it can be selected to get correct data.
Dart
dart pub add dart_gsheet_remote_config
Flutter
flutter pub add dart_gsheet_remote_config
How to use
Create your SheetRemoteConfig instance.
import'package:dart_gsheet_remote_config/dart_gsheet_remote_config.dart';
final remoteConfig = SheetRemoteConfig();
SheetRemoteConfig has a param Client from http package so you can pass your custom Client object when create SheetRemoteConfig instance.
import'package:dart_gsheet_remote_config/dart_gsheet_remote_config.dart';
import'package:http/http.dart'as http;
final client = http.Client();
final remoteConfig = SheetRemoteConfig(client: client);
Fetch remote config data
SheetRemoteConfig provides initilize function and you must pass id and sheetName to initilize remote config:
Document id you can find it in your Google Sheet document Url. For example your Sheet url is https://docs.google.com/spreadsheets/d/123456789, id will be 123456789.
sheetName is worksheet name, nullable, first worksheet will be used if null or passed value is not found.
import'package:dart_gsheet_remote_config/dart_gsheet_remote_config.dart';
final remoteConfig = SheetRemoteConfig();
await remoteConfig.initilize(id: '123456789'); // First worksheet will be usedawait remoteConfig.initilize(id: '123456789', sheetName: 'Sheet1'); // Use specific worksheet name
MUST READ: id mustn't be hardcode if you don't want others to use your remote config. You can use id as .env field or via dart-define and pass it to your app via environment variable. You can use some packages like flutter_dotenv, envied to load .env file.
Get data from remote
SheetRemoteConfig fetchs data in CSV format, data is returned in key-value format, you can key to get value via
get functions, currently SheetRemoteConfig supports String, int, double, bool.
Example response:
"key1","TRUE"
"key2","10"
"key3","value from key 3"
"key4,"1.0"
And get data:
final valueKey1 = remoteConfig.getBool('key1');
print(valueKey1); // truefinal valueKey2 = remoteConfig.getInt('key2');
print(valueKey2); // 10final valueKey3 = remoteConfig.getString('key3');
print(valueKey3); // value from key 3final valueKey4 = remoteConfig.getDouble('key4');
print(valueKey4); // 1.0
If provided key is not found or provided T is incorrect, get functions will return null.
final valueKey5 = remoteConfig.getString('key5');
print(valueKey5); // null
You can pass defaultValue when get functions returns null.
final valueKey5 = remoteConfig.getString('key5', defaultValue: 'this is default value');
print(valueKey5); // this is default value
Get all data from remote
SheetRemoteConfig provides getAll function to get all data from remote.
final allData = remoteConfig.getAll();
print(allData); // {key1: true, key2: 10, key3: value from key 3, key4: 1.0}
Happy coding
That's all for now! Want a feature? Found a bug? Create an issue!