質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

228閲覧

flutter dart List内の特定の値だけ更新したい

ry0559

総合スコア24

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2024/01/31 14:47

編集2024/01/31 15:45

実現したいこと

flutter dart List内の特定の値だけ更新したい

発生している問題・分からないこと

Listのデータをwhereで検索し特定の値だけ更新したいが
List内の全てのデータが更新されてしまう問題を解決したいです

dart.padで実行できます
holeNo:1のplayerNo:1のスコアだけ更新したいのですが
playerNo:1のスコアがすべて更新されてしまいます。
解決方法はありますでしょうか?
よろしくお願いします。

該当のソースコード

dart

1void main() { 2 var scoreEntity = ScoreEntity(); 3 List<PlayerDetail> playerList = []; 4 playerList.add(PlayerDetail(1,'いち',0,0,0)); 5 playerList.add(PlayerDetail(2,'に',0,0,0)); 6 playerList.add(PlayerDetail(3,'さん',0,0,0)); 7 playerList.add(PlayerDetail(4,'し',0,0,0)); 8 9 10 scoreEntity.addDetail(Detail(1,0,0,playerList)); 11 scoreEntity.addDetail(Detail(2,0,0,playerList)); 12 scoreEntity.addDetail(Detail(3,0,0,playerList)); 13 scoreEntity.addDetail(Detail(4,0,0,playerList)); 14 scoreEntity.addDetail(Detail(5,0,0,playerList)); 15 16 17 var detail = scoreEntity.detailList[0]; 18 detail.playerList.firstWhere( 19 (player) => player.playerNo == 1).score = 1; 20 21 22 for(var detail in scoreEntity.detailList){ 23 for(var player in detail.playerList){ 24 print("holeNo:" + detail.holeNo.toString() + ", playerNo:" + player.playerNo.toString() +", name:" + player.playerName + ", score:" + player.score.toString()); 25 26 27 } 28 } 29} 30 31 32class ScoreEntity { 33 34 List<Detail> detailList = []; 35 36 ScoreEntity(); 37 38 void addDetail(Detail detail) { 39 detailList.add(detail); 40 } 41 42 // Getterメソッドを追加: currentHoleInfoプロパティ 43 44} 45 46class Detail { 47 int holeNo = 0; 48 int par = 0; 49 int yard = 0; 50 List<PlayerDetail> playerList = []; 51 52 Detail(this.holeNo, this.par, this.yard, this.playerList); 53} 54 55class PlayerDetail { 56 int playerNo = 0; 57 String playerName = ''; 58 int score = 0; 59 int putts = 0; 60 int teeOrder = 0; 61 62 PlayerDetail(this.playerNo, this.playerName, this.score, this.putts, this.teeOrder); 63} 64 65 66 67 68### 試したこと・調べたこと 69- [x] teratailやGoogle等で検索した 70- [x] ソースコードを自分なりに変更した 71- [ ] 知人に聞いた 72- [ ] その他 73 74##### 上記の詳細・結果 75実行結果 76holeNo:1, playerNo:1, name:いち, score:1 77holeNo:1, playerNo:2, name:, score:0 78holeNo:1, playerNo:3, name:さん, score:0 79holeNo:1, playerNo:4, name:, score:0 80holeNo:2, playerNo:1, name:いち, score:1 81holeNo:2, playerNo:2, name:, score:0 82holeNo:2, playerNo:3, name:さん, score:0 83holeNo:2, playerNo:4, name:, score:0 84holeNo:3, playerNo:1, name:いち, score:1 85holeNo:3, playerNo:2, name:, score:0 86holeNo:3, playerNo:3, name:さん, score:0 87holeNo:3, playerNo:4, name:, score:0 88holeNo:4, playerNo:1, name:いち, score:1 89holeNo:4, playerNo:2, name:, score:0 90holeNo:4, playerNo:3, name:さん, score:0 91holeNo:4, playerNo:4, name:, score:0 92holeNo:5, playerNo:1, name:いち, score:1 93holeNo:5, playerNo:2, name:, score:0 94holeNo:5, playerNo:3, name:さん, score:0 95holeNo:5, playerNo:4, name:, score:0 96 97 98 99### 補足 100特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

void main() { var scoreEntity = ScoreEntity(); List<PlayerDetail> playerList1 = []; playerList1.add(PlayerDetail(1,'1いち',0,0,0)); playerList1.add(PlayerDetail(2,'1に',0,0,0)); playerList1.add(PlayerDetail(3,'1さん',0,0,0)); playerList1.add(PlayerDetail(4,'1し',0,0,0)); List<PlayerDetail> playerList2 = []; playerList2.add(PlayerDetail(1,'2いち',0,0,0)); playerList2.add(PlayerDetail(2,'2に',0,0,0)); playerList2.add(PlayerDetail(3,'2さん',0,0,0)); playerList2.add(PlayerDetail(4,'2し',0,0,0)); List<PlayerDetail> playerList3 = []; playerList3.add(PlayerDetail(1,'3いち',0,0,0)); playerList3.add(PlayerDetail(2,'3に',0,0,0)); playerList3.add(PlayerDetail(3,'3さん',0,0,0)); playerList3.add(PlayerDetail(4,'3し',0,0,0)); List<PlayerDetail> playerList4 = []; playerList4.add(PlayerDetail(1,'4いち',0,0,0)); playerList4.add(PlayerDetail(2,'4に',0,0,0)); playerList4.add(PlayerDetail(3,'4さん',0,0,0)); playerList4.add(PlayerDetail(4,'4し',0,0,0)); List<PlayerDetail> playerList5 = []; playerList5.add(PlayerDetail(1,'5いち',0,0,0)); playerList5.add(PlayerDetail(2,'5に',0,0,0)); playerList5.add(PlayerDetail(3,'5さん',0,0,0)); playerList5.add(PlayerDetail(4,'5し',0,0,0)); scoreEntity.addDetail(Detail(1,0,0,playerList1)); scoreEntity.addDetail(Detail(2,0,0,playerList2)); scoreEntity.addDetail(Detail(3,0,0,playerList3)); scoreEntity.addDetail(Detail(4,0,0,playerList4)); scoreEntity.addDetail(Detail(5,0,0,playerList5)); // scoreEntity.detailList[3].playerList[3].score = 1; var detail = scoreEntity.detailList[3]; detail.playerList.firstWhere( (player) => player.playerNo == 3).score = 1; for(var detail in scoreEntity.detailList){ for(var player in detail.playerList){ print("holeNo:" + detail.holeNo.toString() + ", playerNo:" + player.playerNo.toString() +", name:" + player.playerName + ", score:" + player.score.toString()); } } } class ScoreEntity { List<Detail> detailList = []; ScoreEntity(); void addDetail(Detail detail) { detailList.add(detail); } // Getterメソッドを追加: currentHoleInfoプロパティ } class Detail { int holeNo = 0; int par = 0; int yard = 0; List<PlayerDetail> playerList = []; Detail(this.holeNo, this.par, this.yard, this.playerList); } class PlayerDetail { int playerNo = 0; String playerName = ''; int score = 0; int putts = 0; int teeOrder = 0; PlayerDetail(this.playerNo, this.playerName, this.score, this.putts, this.teeOrder); }

playerListを初期化する必要がありました。

投稿2024/01/31 15:53

ry0559

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問