Dead Code/Flutter_Dart

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

2023. 5. 11.



플러터와 DB

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

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

 

GCP/Sheets 작업

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

 

my image

 

 

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

 

my image

 

 

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

 

my image

 

 

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

 

my image

 

 

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);
  }
}

 

잠시 쉬는 시간..