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에 넣어준다.
그렇게 저장버튼을 누르면!
새로운 메모가 저장된 것을 확인할 수 있다^^
기능은 이걸로 끝이지만 기록을 좋아하는 나에겐 필요한 어플이였다ㅎㅎ
오늘은 아침부터 많은 일을 했으니 짧게 작성하고...일찍 자야겠다!