前提・実現したいこと
Flutterで日付ごとにTODOリストを管理するプログラムを書こうとしています。
しかし、日付ごとにTODOリストをうまく保管、表示できません。
発生している問題・エラーメッセージ
エラーは出ていません。
ラベルを日付(String)にしたMapでList<String>=ToDOリストを管理しています。
TODOリストを追加すると、Map内の全てのラベルの値が追加したTODOリストに変更されてしまいます。
エラーメッセージ
該当のソースコード
Flutter
1Column( 2 crossAxisAlignment: CrossAxisAlignment.center, 3 children: <Widget>[ 4 TextField( 5 decoration: InputDecoration( 6 filled: true, 7 ), 8 onChanged: (value) { 9 _text = value; 10 }, 11 ), 12 ElevatedButton( 13 child: Text('完了'), 14 onPressed: () { 15 model.toDoTitle.removeRange(0, model.toDoTitle.length); 16 model.toDoTitle.add(_text); 17 model.makeEachDateData(); 18 Navigator.pop(context); 19 }, 20 ), 21 ], 22 ),
上記でTextFieldに入力した内容を下記で宣言しているtoDoTitleに追加します。
Flutter
1class ToDoModel extends ChangeNotifier { 2 List<String> toDoTitle = []; 3 DateTime selectedDate = DateTime.now(); 4 Map<String, List> eachDateDataList = {}; 5 6 void makeEachDateData() { 7 eachDateDataList[DateFormat.d().format(selectedDate)] = toDoTitle; 8 print(eachDateDataList['14'][0]); 9 print(eachDateDataList['21'][0]); 10 print(eachDateDataList['28'][0]); 11 notifyListeners(); 12 } 13}
selectedDateにはカレンダーで選択(onTap)した日付が入ります。
toDoTitleに追加された内容を日付のラベルをつけたマップに追加します。
この時にMap内の全ての値が追加したtoDoTitleの値になってしまいます。(printの部分が全て同じ値)
理想としてはこの時に選択した日付=ラベルごとにtoDoTitleが保持され、
後からmodel.eachDateDataList[
DateFormat.d().format(model.selectedDate)][index],することで日付ごとのTODOリストが表示されるようにしたいです。
試したこと
正直なにが悪いか分からず試せておりません。
補足情報(FW/ツールのバージョンなど)
全くの初心者のため説明下手、説明足らずの部分があると思います。
不足している情報がありましたらご教授ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/20 09:39
2021/03/20 10:43