북마커를 구성할 path.json 파일을 아래와 같이 구성했다. txt파일로 만들었더니, 갯수가 많아지니까 헤깔려지기 시작한다. 그래서 json파일로 구성을 했고, 해당 파일을 수정하고 refresh 아이콘을 눌러주면 업데이트가 되도록 한다.
- name : 아이콘에 뜰 이름
- img : 아이콘에 사용할 이미지
- link : 사용할 URI
살짝 아쉬운 부분은 json파일 때문인데, value아이템들의 갯수가 맞는지 알 수 없다는 것이고, 주석처리가 불가능하여 항목이 뭐였는지 알기 어렵다는 점이다.
각 key별 value의 갯수가 맞지 않을때, 예외 처리도 했어야 하는데 귀차니즘으로 안했더니, 갯수가 안맞으면, 실행이 안된다.
{
"name": [
"myblog",
"myblog\nadmin",
"chatGPT",
"adsense",
"kakaotalk",
"excel2019",
"ESPANSO",
"scrcpy",
"jpgToWebp",
"refresh"
],
"img": [
"./path\\img\\2.png",
"./path\\img\\logo.webp",
"./path\\img\\chatGPT.png",
"./path\\img\\adsense.png",
"./path\\img\\kakao.webp",
"./path\\img\\ex.png",
"./path\\img\\espan.png",
"./path\\img\\scrpy.png",
"./path\\img\\webp-devsite-icon_72.png",
"./path\\img\\ref.png"
],
"link": [
"C:\\Program Files (x86)\\Kakao\\KakaoTalk\\KakaoTalk.exe",
"C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCEL.exe",
"C:\\Users\\bong\\Desktop\\__바로가기\\program\\espanso-portable\\START_ESPANSO3.bat",
"C:\\Users\\bong\\Desktop\\__바로가기\\program\\scrcpy-win64-v2.6.1\\scrcpy.bat",
"E:\\FOR_programming\\py\\jpgToWebp\\jpgToWebp.bat",
]
}
json decoding
flutter에서 map으로 호출하는 방식을 사용한다. 매번 사용하면서 느끼는 거지만, 매번 까먹는 아주 기묘한 함수라 할 수 있다.
Future<void> readJsonFileAsMap(String filePath) async {
File file = File(filePath);
if (!await file.exists()) {
debugPrint("json 파일이 존재하지 않습니다: $filePath");
}
// 파일 내용 읽기
String content = await file.readAsString();
// JSON 디코딩
Map<String, dynamic> jsonData = jsonDecode(content);
// Map<String, dynamic> → Map<String, List<String>> 변환
itemlist = jsonData.map((key, value) {
return MapEntry(key, List<String>.from(value));
});
}
끝.