sqflite 사용하기 2

su.log·2020년 9월 22일
0

9월달이 어느새 지나가고 있다니..시간은 너무 빠르구나 다시한번 느낀다. 날도 제법 쌀쌀해졌다.. 오늘은 지난번 1탄에 이어서 2탄을 쓰기로 했다~

저장된 메모를 클릭하면 메모를 수정할 수 있는 버튼과 삭제할 수 있는 버튼이 표시된다.

오늘은 3천걸음도 안걸었으니ㅜㅜ 이따 저녁에 블로그를 올린 후 근처의 천으로 산책을 나갔다오기로 결정하였다ㅎ

에디트창의 코드를 살펴보면,

Widget LoadBuilder() {
    return FutureBuilder(
      future: loadMemo(widget.id),
      builder: (BuildContext context, AsyncSnapshot<List<Memo>> snaps) {
        if (snaps.data == null || snaps.data == []) {
          return Container(
            child: Center(
              child: Text('데이터를 불러올 수 없습니다.'),
            ),
          );
        } else {
          Memo memo = snaps.data[0];

          var tecTitle = TextEditingController();
          title = memo.title;
          tecTitle.text = title;

          var tecText = TextEditingController();
          text = memo.text;
          tecText.text = text;

          createTime = memo.createTime;

          return Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              TextField(
                controller: tecTitle,
                maxLines: 1,
                maxLength: 30,
                onChanged: (String title) {
                  this.title = title;
                },
                style: GoogleFonts.yeonSung(
                  fontSize: 30,
                  fontWeight: FontWeight.w500,
                ),
                decoration: InputDecoration(
                  hintText: '할일의 제목',
                  counterText: "",
                ),
              ),
              Padding(padding: EdgeInsets.all(15)),
              TextField(
                controller: tecText,
                onChanged: (String text) {
                  this.text = text;
                },
                style: GoogleFonts.yeonSung(
                  fontSize: 30,
                  fontWeight: FontWeight.w500,
                ),
                maxLines: 3,
                decoration:
                    InputDecoration(hintText: '내용을 적어주세요', counterText: ""),
              ),
            ],
          );
        }
      },
    );
  }

FutureBuilder() 위젯으로 TextFiled()를 리턴한다. id는 수정하려는 메모의 아이디를 받아와야하기 때문에 에디트페이지에서 생성자를 만들어서 받아왔다. 수정 후에 저장 버튼을 누르면 수정된 그대로 적용이된다.

저장버튼은,

  void upadateDB() async {
    SqlDB sdb = SqlDB();

    var fido = Memo(
      id: widget.id,
      title: this.title,
      text: this.text,
      createTime: this.createTime,
      editTime: DateTime.now().toString(),
    );

    await sdb.updateMemo(fido);

    print(await sdb.memos());
    Navigator.pop(context);
  }
}

updateDB() 함수를만들어 iconbutton에 넣어준다.
그렇게 저장버튼을 누르면!

새로운 메모가 저장된 것을 확인할 수 있다^^
기능은 이걸로 끝이지만 기록을 좋아하는 나에겐 필요한 어플이였다ㅎㅎ
오늘은 아침부터 많은 일을 했으니 짧게 작성하고...일찍 자야겠다!

0개의 댓글