RightonSK / flashcards_mobile_app

1 stars 0 forks source link

単語帳再生機能と遷移ロジックの変更 #12

Closed RightonSK closed 1 year ago

RightonSK commented 1 year ago

参考アプリ: tinder

tinder参考パッケージ↓ https://pub.dev/packages/swipe_cards

RightonSK commented 1 year ago

swipe cards パッケージについて

List SwipeItemクラスのリストを作る必要がある。

SwipeItemのプロパティは?

RightonSK commented 1 year ago

単語帳再生ページはtop pageから(action barのボタンをトリガーに)遷移される。 遷移前に、flashcard play pageのstateにflashcardのオブジェクトを渡す。

RightonSK commented 1 year ago

遷移前init() toppageからflashcard pageに遷移する場合、 遷移前にflashcard pageのnotifier(controller)にflashcardオブジェクトを渡して、そのflashcard オブジェクトから必要な情報をrepositoryから持ってきてstateに格納している(init処理)。

stateに格納したデータ: 渡されたflashcard そのflashcardのwordのリスト(idを用いてfetch) 単語をflipするのに必要な情報を持っているMap型配列

providerってグローバルで定義してるから、アプリ立ち上げ時に初期化されるよね? 答えはNO。初めてreadやwatchされた段階で初期化される。

RightonSK commented 1 year ago

遷移後init() toppageからflashcard pageに遷移する場合、 flashacard pageにflashcardを渡す。

watch時にfamilyを使ってflashcardをproviderに渡す。 providerのコンストラクタの中でinit処理をする。

bodyのGridViewにそもそも単語が空だったら[]を与えるようになっている

RightonSK commented 1 year ago

family修飾子について詳しく調べる

RightonSK commented 1 year ago

freezed生成時にエラーが起きる。

RightonSK commented 1 year ago

flashcard play pageについて

遷移元は、top pageのaction barのプレイボタン。 遷移した後にデータは読み込む。

app barとかはなし。 薄グレーの背面に白の単語カードだけがある状態。 右にスワイプしたら次の単語。次の単語がなければ単語再生モードを終了して、top pageに戻る。 左にスワイプしたら前の単語に戻れる。 タップしたら、単語の意味を見れる。

RightonSK commented 1 year ago

swipe cardのパッケージの使い方が分からないからローカルで回してから動きとかを見るか

RightonSK commented 1 year ago

PageControllerの引数「viewportFraction」は、ページが画面の何割の大きさになるかを指定します。

RightonSK commented 1 year ago

safe areaの左上にstack widgetで×ボタンを置いて、それが押されたら、top pageに戻る。 今までのpageをtreeから消すpushをする。

RightonSK commented 1 year ago
child: SizedBox(  ← page view widgetの上に置くことによってpageviewの範囲を決められる。
          height: 300,
          child: PageView(
            controller: _pageController,
            children: [
              Container( ← Page viewの大きさまで引き伸ばされるwidget
                alignment: Alignment.center,
                child: SizedBox( cardの大きさを決めるためのsizedbox
                  width: 100,
                  height: 100,
                  child: Card(color: Colors.red),
                ),
              ),
              Card(color: Colors.green),
              Card(color: Colors.pink),
            ],
          ),
        ),
RightonSK commented 1 year ago

Navigatorのpop untilメソッドで黒い画面になるエラー

ナビゲーションツリーをうまいこと操作できていない。

アプリ立ち上げ時に最初の画面に行く際にpushNamedで遷移していないから? homeに入れてるだけなので、Navigationメソッドは使わないんだけど、どうすれば良いのか?

RightonSK commented 1 year ago

isActionModeをNavigatorする際は、offにしたい。 ↓ page fileにメソッドを作って、Navigatorを渡す? クラスを作ってNavigatorを渡す。 そのpageのnotifier(controller)にcontextを渡して、isActionModeをオフにした後に遷移するようにする?

RightonSK commented 1 year ago

isActionModeをfalseにしたい場合: 画面遷移を行う場合。

RightonSK commented 1 year ago

2/24 今日のタスク:

今夜のタスク:

RightonSK commented 1 year ago

top pageのbodyにnotifierとstateを渡してるけど、これWidgetRefを入れた方が簡潔なのでは?

RightonSK commented 1 year ago

2/24今夜のタスク; 単語帳再生機能を完成させる。

RightonSK commented 1 year ago

そのページのカードを管理する方法: 一番上でtheme widetで囲み、ページ全体をカードのテーマを管理。 単純にカードの中で指定。 cardを作るクラスを作成。

RightonSK commented 1 year ago

単語帳再生ページ

RightonSK commented 1 year ago

単語帳終了ロジックについて: 最初単語から最後までの移動のoffsetをwatchして、超えたら終了。 最後にcontainerのページとかを追加して、そこに移動するのをonPagechangedなどでwatchして、単語帳再生モードを終了させる。

RightonSK commented 1 year ago

view側で一回だけnotifierに動いてもらinit()処理がわからん。