10/29 勉強備忘録

今日のゴール

Flutter gamesのtemplates と samplesを動かしてみる

https://github.com/flutter/samples/tree/main/game_template

一部のディレクトリだけ git clone する

git cloneと同時に、sparse-checkout を適用したい場合、
git cloneのオプションとして--spaseが存在します。
sparse-checkout initと同様、ルートディレクトリ直下のファイルのみの登録がなされます。

必要なディレクトリが他にある場合は、sparse-checkout setやsparse-checkout addを使用し、作業したいディレクトリを登録します。

$ git clone --filter=blob:none --sparse ${REMOTE_URL}
$ git sparse-checkout set ${DIRECTORY_NAME}

これは記事冒頭のコマンドと同一です。

[masayayamada@MsMBook] ~/OwnProject
% git clone --filter=blob:none https://github.com/flutter/samples.git
Cloning into 'samples'...
remote: Enumerating objects: 22004, done.
remote: Counting objects: 100% (354/354), done.
remote: Compressing objects: 100% (102/102), done.
remote: Total 22004 (delta 249), reused 325 (delta 230), pack-reused 21650
Receiving objects: 100% (22004/22004), 3.42 MiB | 14.57 MiB/s, done.
Resolving deltas: 100% (12971/12971), done.
remote: Enumerating objects: 1897, done.
remote: Counting objects: 100% (1080/1080), done.
remote: Compressing objects: 100% (814/814), done.
remote: Total 1897 (delta 617), reused 277 (delta 266), pack-reused 817
Receiving objects: 100% (1897/1897), 100.32 MiB | 21.64 MiB/s, done.
Resolving deltas: 100% (750/750), done.
Updating files: 100% (4666/4666), done.
[masayayamada@MsMBook] ~/OwnProject
% ls
samples/
[masayayamada@MsMBook] ~/OwnProject
% git sparse-checkout set game_template
fatal: not a git repository (or any of the parent directories): .git
% cd samples 
[masayayamada@MsMBook] ~/OwnProject/samples
% ls                                                                                                                                                   (git)-[main]
AUTHORS                      animations/                  game_template/               place_tracker/               simplistic_editor/
CONTRIBUTING.md              background_isolate_channels/ google_maps/                 platform_channels/           testing_app/
LICENSE                      code_sharing/                infinite_list/               platform_design/             tool/
PATENTS                      deeplink_store_example/      ios_app_clip/                platform_view_swift/         veggieseasons/
README.md                    desktop_photo_search/        isolate_example/             provider_counter/            web/
add_to_app/                  experimental/                jsonexample/                 provider_shopper/            web_embedding/
analysis_defaults/           flutter_maps_firestore/      material_3_demo/             simple_shader/
android_splash_screen/       form_app/                    navigation_and_routing/      simplistic_calculator/
[masayayamada@MsMBook] ~/OwnProject/samples
% git sparse-checkout set game_template                                                                                                                (git)-[main]
[masayayamada@MsMBook] ~/OwnProject/samples
% ls                                                                                                                                                   (git)-[main]
AUTHORS          CONTRIBUTING.md  LICENSE          PATENTS          README.md        game_template/

持ってきたtemplate の/.githubを消して、git init をして、
VScodeでcommit/push して、自分のリポジトリに入れました。

無事、動かせました!

Templateの中身を見て思ったこと

AppLifecycleObserver
Lisnerを自分自身で動かせるように、カスタマイズできる様にしてあるみたい。
このまま使うと、setしたデータをnotifyListeners()する必要がある。

abstract class
抽象化クラスを用いて、SharedPreference のデータをセーブしたり、取得したりしている。

abstract class PlayerProgressPersistence {
  Future<int> getHighestLevelReached();

  Future<void> saveHighestLevelReached(int level);
}


次回やること

作成した画面ペイントを元に、作っていく。
ただし、templateのは使わずに、横で参考にしながら、自分でプロジェクトを作成し、画面を作っていく。

次回のゴール設定

以下の画面の作成、画面遷移作成を行う

  1. スタート画面

  2. ゲーム選択画面

  3. ゲームレベル画面

  4. ゲーム画面

いいなと思ったら応援しよう!