>source

이 클래스를 만들고 JSON으로 인코딩했지만 데이터를 검색하려고 하면 동적 목록목록 문자열의 하위 유형이 아니라는 메시지가 표시됩니다.

favouriteMeals, 즉 List에 대한 데이터를 저장했습니다. 여기,

void saveData() {
    List<String> spList=
        _favouriteMeals.map((e)=> jsonEncode(e.toMap())).toList();
    sharedPreferences.setStringList('favMeals', spList);
    print(spList);
  }

그리고 이제 내 데이터를 로드하려고 할 때 이 오류가 표시됩니다. 아무도 저를 도와주세요?

void loadData() {
        List<String> spList= sharedPreferences.getStringList('favMeals');
        //print(spList);
        _favouriteMeals= spList.map((e)=> Meal.fromMap(json.decode(e))).toList();
        print(_favouriteMeals[0].id);
setState(() {});
  }

식사 수업입니다.

class Meal {
      final String id;
      final List<String> categories;
      final String title;
      final String imageUrl;
      final List<String> ingredients;
      final List<String> steps;
      final int duration;
      final Complexity complexity;
      final Affordability affordability;
      final bool isGlutenFree;
      final bool isLactoseFree;
      final bool isVegan;
      final bool isVegetarian;
      const Meal(
          {@required this.id,
          @required this.categories,
          @required this.title,
          @required this.imageUrl,
          @required this.ingredients,
          @required this.steps,
          @required this.duration,
          @required this.complexity,
          @required this.affordability,
          @required this.isGlutenFree,
          @required this.isLactoseFree,
          @required this.isVegan,
          @required this.isVegetarian});
      Meal.fromMap(Map map)
          : this.id= map['id'],
            this.categories= map['categories'],
            this.title= map['title'],
            this.imageUrl= map['imageUrl'],
            this.ingredients= map['ingredients'],
            this.steps= map['steps'],
            this.duration= map['duration'],
            this.complexity= Complexity.values.elementAt(map['complexity']),
            this.affordability=
                Affordability.values.elementAt(map['affordability']),
            this.isGlutenFree= map['isGlutenFree'],
            this.isLactoseFree= map['isLactoseFree'],
            this.isVegan= map['isVegan'],
            this.isVegetarian= map['isVegetarian'];
      Map toMap() {
        return {
          'id': this.id,
          'categories': this.categories,
          'title': this.title,
          'imageUrl': this.imageUrl,
          'ingredients': this.ingredients,
          'steps': this.steps,
          'duration': this.duration,
          'complexity': this.complexity.index,
          'affordability': this.affordability.index,
          'isGlutenFree': this.isGlutenFree,
          'isLactoseFree': this.isLactoseFree,
          'isVegan': this.isVegan,
          'isVegetarian': this.isVegetarian,
        };
      }

}

오류 메시지를 공유하십시오

Ahmad Raza2022-02-14 10:25:46
  • 답변 # 1

    시도:

    _favouriteMeals= spList.map((e)=> Meal.fromMap(Map.from(jsonDecode(e)))).toList();
    

    나는 여전히 똑같은 것을 얻고있다.

    Sarthak Kumar Mishra2022-02-14 10:34:26

    목록을 저장하는 것이 잘 작동합니까?

    Josteve2022-02-14 10:36:58

    예 저장은 잘 작동했지만 문제는 로드에 있었습니다.

    Sarthak Kumar Mishra2022-02-14 10:41:12

    ` List다음에 spList를 출력할 때 spList= sharedPreferences.getStringList('favMeals'); ` 효과가 있나요?

    Josteve2022-02-14 10:44:07

    네 잘 작동합니다

    Sarthak Kumar Mishra2022-02-14 10:46:00
  • 이전 reactjs : 매핑된 데이터 React JS 토글 클릭
  • 다음 PHP에서 쉘로 백그라운드 실행에서 실행되는 프로세스의 PID를 얻는 방법