実現したいこと
Flutter で List型のListをShared_Preference で setStringList を行いたいです。
発生しているエラー
以下のようなエラーが発生し、shared_preference に書き込めません。
21:39: Error: The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<String>'. - 'List' is from 'dart:core'. prefs.setStringList("list$i", set.elementAt(i)); ^
該当のソースコード
dart
1import 'package:flutter/material.dart'; 2import 'package:shared_preferences/shared_preferences.dart'; 3 4void main() { 5 runApp(const MyApp()); 6 addList(); 7} 8List<String> stringList = ["目標を入力","目標を入力","目標を入力"]; 9final set = <List>{ 10}; 11void addList(){ 12 for(var i=1;i<=7;i++){ 13 set.add(["目標を入力","目標を入力","目標を入力"]); 14 //set.add(stringList);としても同様のエラーが発生しました。 15 } 16 print(set.elementAt(0)[0]);//テスト用 17} 18Future<void> writeData() async{ 19 final SharedPreferences prefs = await SharedPreferences.getInstance(); 20 for(var i=1;i<=7;i++){ 21 prefs.setStringList("list$i", set.elementAt(i)); 22 } 23 24} 25class MyApp extends StatelessWidget { 26 const MyApp({super.key}); 27 28 // This widget is the root of your application. 29 30 Widget build(BuildContext context) { 31 return MaterialApp( 32 home: Scaffold( 33 body:Container( 34 ), 35 ), 36 ); 37 } 38 39} 40
試したこと
The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<String>'.というエラーが出たので、set.add(stringList);のようにString型で宣言した配列をsetに直接追加してみたのですが、結局追加されるとList<dynamic>になるようで、
同様のエラーが発生しました。
補足情報(FW/ツールのバージョンなど)
Flutter version 3.3.0 を使用しています。
回答よろしくお願いします!
回答1件
あなたの回答
tips
プレビュー