memoList.isEmpty
? Center(child: Text("메모를 작성해 주세요"))
: Center(child: Text("메모가 존재합니다"))
ListView.builder(
itemCount: memoList.length, // memoList 개수 만큼 보여주기
itemBuilder: (context, index) {
String memo = memoList[index]; // index에 해당하는 memo 가져오기
return ListTile(
// 메모 고정 아이콘
leading: IconButton(
icon: Icon(CupertinoIcons.pin),
onPressed: () {
print('$memo : pin 클릭 됨');
},
),
// 메모 내용 (최대 3줄까지만 보여주도록)
title: Text(
memo,
maxLines: 3,
overflow: TextOverflow.ellipsis,
),
onTap: () {
// 아이템 클릭시
print('$memo : 클릭 됨');
},
);
},
),
메모 목록에서 ListTile을 누르면 DetailPage로 넘어가도록 구현
onTap: () {
// 아이템 클릭시
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => DetailPage(
index: index,
momoList: memoList,
)),
);
},
DetailPage에서 index와 memoList를 넘겨받도록 수정
DetailPage({super.key required this.memoList, required this.index})
final List<String> memoList;
final int index;
DetailPage에서 초기값 지정
contentController.text = memoList[index];
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
// + 버튼 클릭시 메모 생성 및 수정 페이지로 이동
String memo = "";
memoList.add(memo);
Navigator.push(
context,
MaterialPageRoute(
builder: (_) =>
DetailPage(
index: memoList.indexOf(memo),
memoList: memoList,
),
),
);
},
),
setState(() {
memoList.add(memo);
});
TextField(
...
onChanged: (value) {
memoList[index] = value;
}
)
IconButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text("정말로 삭제하시겠습니까?"),
actions: [
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: Text("취소"),
),
TextButton(
onPressed: () {
// 삭제 로직
memoList.removeAt(index); // index에 해당하는 항목 삭제
Navigator.pop(context); // 팝업 닫기
Navigator.pop(context); // HomePage 로 가기
},
child: Text("확인"),
),
]
);
}
);
},
...
)