Search
▪️

Offline Data Storage

기기 내부에 데이터 베이스를 두어 이용할 수 있다. flutter의 경우 sqflite를 주로 쓴다. 이런 데이터 베이스를 이용하기 위해서는 DbProvider라는 클래스를 두어 사용하게 되는데 여기서 해줘야하는 로직은 database setup의 init, crud작업을 하는 function들이 된다.
import 'package:sqflite/sqflite.dart'; 후 클래스 내에 Database 인스턴스를 생성한다. 이 데이터 베이스를 이용할 위치를 지정해야 해서 별도의 작업이 필요하다.
데이터 베이스를 사용할 parent directory reference를 생성해준 후, 해당 directory에 데이터 베이스를 둘 이름을 join하여 path를 생성한다. 생성된 path를 기준으로 openDatabase 하여 데이터 베이스를 생성하거나 이미 존재하면 실행하도록 한다.
dart에서 ''' '''와 같이 quote를 세번 쓰면 멀티 라인을 허용하는 스트링으로 바뀐다.
멀티라인에서 sqflite 쿼리 작성 시에, 존재하지 않는 타입의 List는 정수형 리스트인 BLOB으로 받으며, BOOL타입은 지원하지 않기 때문에 INTEGER로 받는 식의 트릭을 이용한다.
sqflite에서 where 절에 ? 인자를 넣을 수 있는데, 이 때 where 절의 ?는 whereArgs의 값들로 대치된다.
json으로 decode되어 받은 데이터들에 대해서 dart는 list안에 어떤 데이터 타입으로 정의되어 있는지 알 수 없기 때문에 특정 데이터 타입으로 casting해줘야 한다.
List<int>로 받는다고 했을 때 json.decode() as List<int>; 가능
List<int>로 받는다고 했을 때, 받은 json.decode를 담은 List<dynamic> 타입 변수에 대해서 변수.cast<int>(); 도 가능