패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소dungngminh/dart_gsheet_remote_config

dart_gsheet_remote_config

Dart Google 시트 원격 구성 - Google 시트를 원격 구성으로 사용

dart_gsheet_remote_config 프로젝트 이미지
스타
7
포크
0
최근 푸시(UTC)
2025. 2. 10.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

Dart Google Sheet Remote Config

pub package

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.

How it works

MUST READ before use

  • 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.

image

  • Add your data to sheet in format:
    • First column will be keys
    • Second column will be values

image_2

  • 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:

image_3

  • You can create more than 1 worksheet to manage your config better and it can be selected to get correct data.

image_4

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 used

await 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); // true

final valueKey2 = remoteConfig.getInt('key2');
print(valueKey2); // 10

final valueKey3 = remoteConfig.getString('key3');
print(valueKey3); // value from key 3

final 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!

Dzung Nguyen Minh GitHub avatar
GitHub 작성자

Dzung Nguyen Minh ↗

I'm trying to be my best version

@KomKatStudioDa Nang, Viet Nam
언어DartSwiftKotlinObjective-C

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 4 개

  • http^1.2.2
  • lints개발 의존성>=4.0.0 <6.0.0
  • test개발 의존성^1.24.0
  • mockito개발 의존성^5.4.4

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗