•
기기 내부에 데이터 베이스를 두어 이용할 수 있다. 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>(); 도 가능