Flutter6日目

ハイライト iOS API呼び出し ハードの回転処理への固定の仕方

iOS API呼び出し

基本はこれに則り実装していく。 Writing custom platform-specific code with platform channelsWriting custom platform-specific code with platform channels

途中でここに誘導されるが https://github.com/flutter/flutter/tree/master/examples/platform_channel これを clone してきて実際にビルドしてみてどうなっているかテストしてみるのが良い。

cloneしてビルドするだけなのにエラーが発生することがある。

Xcodexcode_backend.sh not found 的なエラーが発生した場合

$FLUTTER_ROOT が設定されていない。 これを export するか、プロジェクトの BuildPhases -> Run Script の $FLUTTER_ROOT を自分の Flutter のインストールしてあるディレクトリを指定すると良い

ターミナルのビルドでバージョンコンフリクトが発生する場合

具体的には以下のような内容 [platform_channel] flutter packages get Running "flutter packages get" in platform_channel... Package collection has no versions that match 1.14.5 derived from: - async 2.0.6 depends on version ^1.5.0 - barback 0.15.2+15 depends on version ^1.5.0 - boolean_selector 1.0.3 depends on version ^1.5.0 - crypto 2.0.2+1 depends on version ^1.0.0 - flutter 0.0.0 depends on version 1.14.5 - platform_channel depends on version 1.14.6 pub get failed (1) exit code 1

この場合、pubspec.yaml 内の各パッケージのバージョンをチマチマ揃えて上げるとうまくいく。 Mac 側ではもう少し少なかったんですけど今 Windows でやったら結構数が多いな...

iOS回転方向の固定

Flutter: How to avoid change orientation?

これだけで良い。 void main() { SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeRight, DeviceOrientation.landscapeLeft, ]); run(new MyApp()); }

DeviceOrientation は enum なので、. からうち直せばインテリセンスが効く。

ただ、バグの報告も過去にあったようなのでバージョンによっては注意。 https://github.com/flutter/flutter/issues/13238

というか、自分のところでも iPad でクルックル回転してる。 なんだろう。