커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
Memo에 왜 빨간 밑줄이 뜰까요?
앱개발 종합반 - 플러터 v8
3주차
북마크
이*란
댓글
6
추천
0
조회수
13
조회수
13
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


3주차 숙제를 하고 있습니다!

그런데 첫번째 문제의 첫 고비부터가 난관이네요.


분명 답안 코드대로 따라가고 있는데, 왜 Memo와 Map에서 빨간 밑줄이 사라지지 않는 걸까요...?




스파르타 즉문즉답스파르타 즉문즉답스파르타 즉문즉답







import 'dart:convert';


import 'package:flutter/material.dart';


import 'main.dart';


// Memo 데이터의 형식을 정해줍니다. 추후 isPinned, updatedAt 등의 정보도 저장할 수 있습니다.
class Memo {
  Memo({
    required this.content, 
    this.isPinned = false, // required는 한 번만 써주면 된당
  });


  String content;
  bool isPinned,


  Map toJson() {
    return {
      'content': content, 
      'isPinned': isPinned,
    };
  }


  factory Memo.fromJson(json) {
    return Memo(
      content: json['content'],
      isPinned: json['isPinned'] ?? false, // "?? false"를 써줘야 에러가 안난당
    );
  }
}


// Memo 데이터는 모두 여기서 관리
class MemoService extends ChangeNotifier {
  MemoService() {
    loadMemoList();
  }
  List<Memo> memoList = [
    Memo(content: '장보기 목록: 사과, 양파'), // 더미(dummy) 데이터
    Memo(content: '새 메모'), // 더미(dummy) 데이터
  ];


  createMemo({required String content}) {
    Memo memo = Memo(content: content, isPinned: false);
    memoList.add(memo);
    notifyListeners();
    saveMemoList();
  }


  updateMemo({required int index, required String content}) {
    Memo memo = memoList[index];
    memo.content = content;
    notifyListeners();
    saveMemoList();
  }


  deleteMemo({required int index}) {
    memoList.removeAt(index);
    notifyListeners();
    saveMemoList();
  }


  saveMemoList() {
    List memoJsonList = memoList.map((memo) => memo.toJson()).toList();
    // [{"content": "1"}, {"content": "2"}]


    String jsonString = jsonEncode(memoJsonList);
    // '[{"content": "1"}, {"content": "2"}]'


    prefs.setString('memoList', jsonString);
  }


  loadMemoList() {
    String? jsonString = prefs.getString('memoList');
    // '[{"content": "1"}, {"content": "2"}]'


    if (jsonString == null) return; // null 이면 로드하지 않음


    List memoJsonList = jsonDecode(jsonString);
    // [{"content": "1"}, {"content": "2"}]


    memoList = memoJsonList.map((json) => Memo.fromJson(json)).toList();
  }
}


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴