この章では、3Dモデルの読み込み状況をFlutter3DViewerから受け取り、前章で定義したViewerStatusへ反映します。
3Dモデルの読み込みは、画面表示とは別に進む非同期処理です。そのため、開始直後、読み込み完了時、失敗時で画面の状態を切り替える必要があります。
コールバック関数とは、ある処理が発生したときに呼び出される関数です。
3Dビューアーでは、次のようなタイミングで処理を受け取れます。
画面側は、これらのイベントへ対応する関数を渡しておきます。3Dビューアーは、必要なタイミングでその関数を呼び出します。
モデルの読み込みが完了したときは、onLoadが呼び出されます。
onLoad: () {
_handleModelLoaded();
},
処理本体は、専用のメソッドへ分離します。
/// 3Dモデルの読み込み完了を画面状態へ反映します。
///
/// 入力: なし
/// 出力: なし
void _handleModelLoaded() {
if (!mounted) {
return;
}
setState(() {
_status = ViewerStatus.ready;
_errorMessage = '';
});
}
読み込みが成功したため、状態をreadyへ変更します。同時に、以前のエラーメッセージを空に戻します。
モデルの取得や解析に失敗すると、onErrorが呼び出されます。
onError: (String error) {
_handleModelError(error);
},
受け取ったエラー内容を、状態変数へ保存します。
/// 3Dモデルの読み込みエラーを画面状態へ反映します。
///
/// 入力: パッケージから受け取ったエラー文字列
/// 出力: なし
void _handleModelError(String error) {
if (!mounted) {
return;
}
setState(() {
_status = ViewerStatus.error;
_errorMessage = error;
});
}