RightonSK / TravelSampleApp

0 stars 0 forks source link

進捗2 #3

Open RightonSK opened 2 years ago

RightonSK commented 2 years ago

2/24 とりあえずエンティティの追加処理の際、document idを先に取得して、それを用いて追加する。

RightonSK commented 2 years ago

provider packageだとログインしたユーザー情報ってどこに保存しておくんだ?

riverpodだとStateProviderに保存しておけばよい。

RightonSK commented 2 years ago

明日やること: 書いたものをchemistoryの方に移植してみる。

RightonSK commented 2 years ago

土日でやること:

Edit My PageのUIを完成させること。 Userクラスを変更したことの報告。

Userクラスなんですけど、freezedを用いた形に変更しても良いですか?freezedのcopyWithメソッド使いたいので。 immutableな属性のままで、機能が増えるだけなのでおそらく問題ないと思います。

RightonSK commented 2 years ago

プロフィール編集画面のUIの作り方が分からない。→ 調べる。 https://zenn.dev/masarufuruya/articles/flutter-row-textfield

TextFieldを使うと、onchangedで文字を打つたびにStateが変わってしまう。 おそらく、TextFormFieldを使えばとControllerを使えば、おそらくクリアできる。

プロフィール画像変更の機能を作る

RightonSK commented 2 years ago

2/27

現在、mypageとedit mypageが同じstateを見ているから、text fieldのonChangedメソッドで問題が起こる。 ← 随時、stateの中身を変更してしまうため。 なのでmypage_stateとは別にedit mypage_stateを作れば問題がなくなる。

RightonSK commented 2 years ago

edit pageにて、最初にcopy book methodでstateの中身を更新すると毎回build時にstateを更新→stateが更新されたので、rebuildの無限ループが起きてしまう。 最初のbuild時にだけ、実行したいものはどうすれば?

遷移前のpageでNavigator push時に、遷移pageのnotifierに先にstateとなる情報を渡せばいいのでは?

何かの機能に頼るだけじゃなくて、自らロジックを作ればいいのか? 仕様を理解して、上手く利用するとか

RightonSK commented 2 years ago

上手いことtextEditingControllerが機能しない。 実機でも同じようになるのか検証してみたい。

RightonSK commented 2 years ago
            Row(
              children: <Widget>[
                Expanded(
                  flex: 3,
                  child: Text('Username: '),
                ),
                Expanded(
                  flex: 7,
                  child: TextField(
                    controller: _userController,
                  ),
                ),
              ],
            ),

expandedとflexプロパティを使えば上手くレイアウトの調節が出来そう。 https://flutter.keicode.com/basics/textcontroller.php

RightonSK commented 2 years ago

3/1 プロフィール画像変更機能。 レイアウト調整の勉強と実装。

RightonSK commented 2 years ago

3/31 マイページの大まかなレイアウトの変更は完了した。 なので、次はプロフィール編集画面の方を変更していく

RightonSK commented 2 years ago

4/1 ヘッダー画像のheightは、画面サイズの何割にするか?

RightonSK commented 2 years ago

drop down buttonの実装

データを保存ロジックの見直しをしたい。 文字が入力される度にstateを更新するのか or 完了ボタンを押した時に、stateを更新するのか 完了ボタンを押すまでの間、どうやってデータを保持するか? (MVVM的に考えたい)

それにdrop down buttonのデータも含めて考える!

結論: TextFieldに関しては、controllerで管理して、完了ボタンを押した際に、stateを更新する。 drop down buttonで選ぶデータに関しては、逐次stateの値を更新する。

RightonSK commented 2 years ago

4/6 text editing controllerを使うには、stateful widgetにするか、hook widgetを使うかのどちらか

RightonSK commented 2 years ago

https://qiita.com/tabe_unity/items/4c0fa9b167f4d0a7d7c2

Columnの中でListViewを使うにはどうすればいいか?

shrinkWrap: true, //追加 physics: const NeverScrollableScrollPhysics(),

これらを追加すればうまくいったが、なぜうまくいくのか調べたい!

RightonSK commented 2 years ago

どうやって、drop down buttonの表示されているvalueを変化させるか?

選択されたvalueのindexをstate側で保持して、それを基に表示するvalueを変化させる。

RightonSK commented 2 years ago

エラーコード: Unsupported operation: Cannot modify an unmodifiable list

もしかしたら、ListViewの中では、dropdownButtonは使えないかも?

おそらくListviewがUnmodifiable list

思いつく解決策の一つとして、 Columnのchildrenにfor文を使って実装すればいけるかも? そもそもlistviewがunmodifiable listなのかどうか調べる。 Columnとlistviewの違いについても調べたい

RightonSK commented 2 years ago

上記のエラーコードについて

stateless widgetなのが理由なのか? stateless widgetの中ではdrop down buttonは使えない、みたいな それともlistview自体に問題があるのか? そもそもlistviewで作るよりもcolumn + forで作った方が見やすいのではないだろうか?

RightonSK commented 2 years ago

stateless widgetは、stateが変更した時にリビルドして、再描画するので、drop down buttonが変更されても、それをtriggerにリビルドは起きない。 それを解決する一つの方法として、stateでdrop down buttonのvalueを管理する

RightonSK commented 2 years ago

listviewじゃなくてlistview.builderが原因でエラーが起きている可能性がある。

/// [ListView.builder] by default does not support child reordering. If /// you are planning to change child order at a later time, consider using /// [ListView] or [ListView.custom].

RightonSK commented 2 years ago

riverpod official state providerのところに、drop down buttonを用いたsample codeがある。

RightonSK commented 2 years ago

4/12 コードの整理とdrop down button, enum, state providerについての使い方について再確認した。

明日は、drop down buttonで選ばれたvalueをfirestore側に保存できるようにする。

RightonSK commented 2 years ago

4/14 基本情報用のコレクションを用意して、そこにデータを格納する。 配列型で保存はしたくないので