質問編集履歴

1

質問を追加させてもらいました。

2022/09/25 05:26

投稿

9nahito
9nahito

スコア45

test CHANGED
@@ -1 +1 @@
1
- Flutter で変数をfor大量生成したいです
1
+ Flutter で List型のListShared_Preference setStringList を行いたいです
test CHANGED
@@ -1,40 +1,39 @@
1
1
  ### 実現したいこと
2
- Flutter で変数をfor文で大量生成したいです。
3
- Flutter で大量のListをfor自動で作り、List型のListにfor文登録るにはどうすればよいでしょうか?
2
+ Flutter で List型のListをShared_Preference setStringList を行いたいです
4
- 手動でする方法しかわからず、手動でListを作成し、手動でList型のListに登録しています。
5
3
 
4
+ ### 発生しているエラー
5
+ 以下のようなエラーが発生し、shared_preference に書き込めません。
6
+ ```
7
+ 21:39: Error: The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<String>'.
8
+ - 'List' is from 'dart:core'.
9
+ prefs.setStringList("list$i", set.elementAt(i));
10
+ ^
11
+ ```
6
12
  ### 該当のソースコード
7
-
8
13
  ```dart
9
14
  import 'package:flutter/material.dart';
15
+ import 'package:shared_preferences/shared_preferences.dart';
10
16
 
11
17
  void main() {
12
18
  runApp(const MyApp());
13
19
  addList();
14
20
  }
15
- List<String> formTxts1 = ["目標を入力","目標を入力","目標を入力",];
21
+ List<String> stringList = ["目標を入力","目標を入力","目標を入力"];
16
- List<String> formTxts2 = ["目標を入力","目標を入力","目標を入力",];
17
- List<String> formTxts3 = ["目標を入力","目標を入力","目標を入力",];
18
- List<String> formTxts4 = ["目標を入力","目標を入力","目標を入力",];
19
- List<String> formTxts5 = ["目標を入力","目標を入力","目標を入力",];
20
- List<String> formTxts6 = ["目標を入力","目標を入力","目標を入力",];
21
- List<String> formTxts7 = ["目標を入力","目標を入力","目標を入力",];
22
-
23
22
  final set = <List>{
24
23
  };
25
24
  void addList(){
26
25
  for(var i=1;i<=7;i++){
26
+ set.add(["目標を入力","目標を入力","目標を入力"]);
27
- //set.add(formTxts$i);のようにできないでょうか?
27
+ //set.add(stringList);としても同様エラーが発生ました。
28
+ }
29
+ print(set.elementAt(0)[0]);//テスト用
30
+ }
31
+ Future<void> writeData() async{
32
+ final SharedPreferences prefs = await SharedPreferences.getInstance();
33
+ for(var i=1;i<=7;i++){
34
+ prefs.setStringList("list$i", set.elementAt(i));
28
35
  }
29
36
 
30
- set.add(formTxts1);
31
- set.add(formTxts2);
32
- set.add(formTxts3);
33
- set.add(formTxts4);
34
- set.add(formTxts5);
35
- set.add(formTxts6);
36
- set.add(formTxts7);
37
- print(set.elementAt(0)[0]);//テスト用
38
37
  }
39
38
  class MyApp extends StatelessWidget {
40
39
  const MyApp({super.key});
@@ -53,6 +52,9 @@
53
52
  }
54
53
 
55
54
  ```
55
+ ### 試したこと
56
+ The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<String>'.というエラーが出たので、set.add(stringList);のようにString型で宣言した配列をsetに直接追加してみたのですが、結局追加されるとList<dynamic>になるようで、
57
+ 同様のエラーが発生しました。
56
58
  ### 補足情報(FW/ツールのバージョンなど)
57
59
 
58
60
  Flutter version 3.3.0 を使用しています。