본문 바로가기
Dead Code/Flutter_Dart

[플러터] 구글 Sheets 를 DB로 사용해서 갤러리 만들기 #1

by JO_i 2023. 5. 11.

플러터와 DB

이미지 갤러리라면, DB를 구성하고 이미지를 저장하고 관리하는 것이 여간 귀찮은 일이 아닐 것이다.(해본 적이 없어서 추정) 🤭🤭🤭🤭

Firebase로 youtube 리스트를 구성한 적이 있었는데, 모바일로 경로를 등록하는 것도 firebase에서 수기로 입력하는 것도 상당히 귀찮다. 그래서, 엑셀처럼 구글 Sheets 로 테이블을 구성하여, DB로 사용하는 방법을 구성해 보았다.

 

GCP/Sheets 작업

당연히, GCP 프로젝트를 생성해야한다. 꽤 오래전에 만들어 놓은터라... 무슨 난관이 있었는지 기억나지 않는다.

 

 

 

서비스 계정을 생성한다. 누르기만 하면 된다.

 

 

 

구글 Sheets의 원하는 프로젝트에 들어가서, share 에다가 서비스 계정을 공유해준다. 서비스 계정이 뭔가 했더니, 내 껄 모니터링 하는 봇같은 느낌이다.

 

 

 

GCP로 다시 돌아와서 서비스 계정에 키를 생성한다. 키 생성 옵션에 JSON 파일을 선택하고,  다운 받도록 한다. JSON 파일은 다시는 다운 받을 수 없음에 유의해야 한다. 한참 찾았는데, 음... 다시 받을 순 없더라.

 

 

 

flutter 작업 : flutter-gsheets 호출

gsheets 패키지를 설치한다.

 

dependencies:
  cupertino_icons: ^1.0.2
  flutter:
    sdk: flutter
  gsheets: ^0.4.2
  intl: ^0.18.1

 

 

gsheets 클래스를 만들어 준다. credetials 변수에 다운 받아놨던 JSON 키 파일의 내용을 복붙 해준다. 특별한 건 없다.

 

import 'package:gsheets/gsheets.dart';

class MyGsheet {
  // create credentials
  static const credentials = r'''
{
  // your json code here from GCP
}
''';

// spreadsheet ID
  static const spreadsheetID = '1FSTtTZ8VB9feu9f-0ZRMV16SZPzwK5ZGVUYMcP9PJ2g';

  static late Worksheet? sheet;

  static gsheetinit() async {
    //init Google Sheets API
    final gsheets = GSheets(credentials);
    //fetches spreadsheet by its id
    final ss = await gsheets.spreadsheet(spreadsheetID);
    // get worksheet by its title - 'gal' is my own sheet name
    sheet = ss.worksheetByTitle('gal');
  }
 
  //CRUD sample
  //Read data functions
  static Future<String> readSingleCellValue(int column, int row) async {
    return await sheet!.values.value(column: column, row: row);
  }

  static Future<List> readCellByColumn(int fromRow) async {
    return await sheet!.values.allColumns(fromRow: fromRow);
  }

  static cellUpdate(String rowKey, String newTxt) async {
    await sheet!.values
        .insertValueByKeys(newTxt, columnKey: 'title', rowKey: rowKey);
  }
}

 

잠시 쉬는 시간..