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のは使わずに、横で参考にしながら、自分でプロジェクトを作成し、画面を作っていく。
次回のゴール設定
以下の画面の作成、画面遷移作成を行う
スタート画面
ゲーム選択画面
ゲームレベル画面
ゲーム画面