現在作成中のアプリでCMを見ることによってコースが公開される機能を追加しようとしています。
現状、最初は全てロック状態、「CMを見る」をタップすると、タップしたコースのロックが解除される仕様です。
今回の質問は
・デフォルトでロックを解除されたものをリストにあらかじめ入れておく方法。
・全てを解除のボタンを押すと全てのコースをunlockedリストに一括で入れる方法。
が質問内容になります。
List<String> _unlockedIds = ['b1','b2','b3'];//idを指定して元からアンロックされているコースを作りたい List<String> get ids => _unlockedIds; UnlockedList() { load(); }
上記のようにidである、b1,b2,b3をリストにあらかじめ入れてみたのですが、シミュレータ上では一瞬解除されたように表示され再びロック状態になってしまいます。
//全てのidをアンロックしたい void unlockAll(String id) { _unlockedIds.add(id); save(); notifyListeners(); }
unlockAllという機能は作っておりますが、一括で全てのidを取得する方法が分からずに困っています。
一括でidを取得するよりもっと良い方法があるかもしれませんが、、、
ちなみに今回course_card.dartというファイルの_showDialog()にアンロックボタンを入れているので、そのCardウィジェット自体をConsumerで囲んでおります。
(アンロック時にカード自体がリビルドされなければならないため)
しかし、それだけだと_showDialog()のonPressed()でunlockedList.unlock(widget.course.id)が使えなかったため_showDialog()自体のウィジェットもConsumerで囲んでおります。
いまいちConsumerの使い方を理解できていない気がするので間違っていればアドバイスいただければ幸いです。
初心者で初めて、手探りでアプリを作成しておりますので基礎的なところがわかっていないかと思いますがどうか教えていただけると幸いです。m(__)m
よろしくお願いいたします。
Githubでソースを公開しておりますので、一度確認いただければと思います。
https://github.com/nannantown/flutter_lang
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/03 09:19