sqflite 사용하기 1

su.log·2020년 9월 11일
0

오늘은 재즐보프님의 sqflite 강의를 따라하고 한번 다시 해보면서 정리한 사용법을 정리해보려고 한다'ㅡ'
공부도 하고 이사도 하느라 정신없지만 정리를 게을리하지 않겠다고 다시 한번 다짐하면서..

간단하게 sqflte로 할일을 정리하는 어플을 만들어 보았다.

첫화면은 간단한ui 구성과 FutureBuilder()를 사용하였다.

Widget memoBuilder(BuildContext pcontext) {
    return FutureBuilder(
      future: loadMemo(),
      builder: (BuildContext context, AsyncSnapshot<List<Memo>> memosnap) {
        if (!memosnap.hasData) {
          return Container(
            child: Text('오늘 할일을 적어주세요'),
          );
        }

FutureBuilder()를 간략히 설명하면 미래에서 받아올 데이터를 future: 에 담아주고 builder: 를 통해 데이터를 다 받아오기전에 화면에 먼저 그려주는 것이다. setState를 통해 일일이 화면을 바꿔주지 않아도 FutureBuider로 받아올 수 있다!

future에서 받아온 데이터는 loadMemo()로 Sqflite를 사용한 파일을 담아 인스턴스화 했다.

 Future<List<Memo>> loadMemo() {
   SqlDB sdb = SqlDB();
   return sdb.memos();
 }

메모를 클릭하면 메모를 볼 수 있는 페이지로 이동하게 된다.

메모 상세보기 페이지또한 FutureBuilder()를 통해 구현하였다.

삭제 아이콘을 누르게 되면,

삭제경고 다이얼로그를 띄운다.

void showAlertDialog() async {
    await showDialog(
        context: _context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('삭제창'),
            content: Text('삭제하실건가요?'),
            actions: <Widget>[
              FlatButton(
                child: Text('삭제'),
                onPressed: () {
                  Navigator.pop(context, '삭제');
                  setState(() {
                    deleteMemo(widget.id);
                  });
                  Navigator.pop(_context);
                },
              ),
              FlatButton(
                  child: Text('취소'),
                  onPressed: () {
                    Navigator.pop(context, '취소');
                  }),
            ],
          );
        });

삭제를 누르면 메인페이지에서도 삭제가 완료된다.
옆의 버튼은 메모를 수정하는 버튼이다.

메모의 내용을 수정할 수 있는 페이지로 이동된다.
집들이 음식으로 뭘 만들면 좋을지 더 적어봐야겠다ㅎ

역시 그냥 해보고 생각으로 정리하는 것과 글로쓰는것의 차이는 큰 것 같다. 좀 더 다듬으면서 재정리할 수 있어서 역시 글쓰는게 최고다^^

2탄은 이번주가 다지나가기 전에 올려야겠다!
어쩌다 보니 일기가 된 1탄 끝~

0개의 댓글