<

iOS FlutterViewControllerのsplashScreenViewがnull可能になりました

まとめ

FlutterViewController財産splashScreenViewもっている から変更されましたnonnullnullable

の古い宣言splashScreenView:

@property(strong, nonatomic) UIView* splashScreenView;

の新たな宣言splashScreenView:

@property(strong, nonatomic, nullable) UIView* splashScreenView;

コンテクスト

この変更が行われる前は、iOS ではsplashScreenView返された財産nilスプラッシュ スクリーン ビューが設定されていない場合、および プロパティをに設定するnilスプラッシュ スクリーン ビューを削除しました。 しかしsplashScreenViewAPI が誤ってマークされていましたnonnull。 このプロパティは、への移行時に最もよく使用されます。 iOS のアプリへの追加シナリオでビューを flutterします。

変更内容の説明

Objective-C では回避することが可能でしたが、 正しくないnonnull設定による注釈splashScreenViewに あるnil UIView、Swift では、これによりコンパイル エラーが発生しました。

error build: Value of optional type 'UIView?' must be unwrapped to a value of type 'UIView'

PR #34743プロパティ属性を次のように更新しますnullable。 戻れるよnilに設定できますnilに Objective-C と Swift の両方でビューを削除します。

移行ガイド

もしもsplashScreenViewに保存されていますUIViewSwiftの変数、 オプションのタイプに更新するUIView?

移行前のコード:

  var splashScreenView = UIView()
  var flutterEngine = FlutterEngine(name: "my flutter engine")
  let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
  splashScreenView = flutterViewController.splashScreenView // compilation error: Value of optional type 'UIView?' must be unwrapped to a value of type 'UIView'

移行後のコード:

  var splashScreenView : UIView? = UIView()
  var flutterEngine = FlutterEngine(name: "my flutter engine")
  let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
  let splashScreenView = flutterViewController.splashScreenView // compiles successfully
  if let splashScreenView = splashScreenView {
  }

タイムライン

安定版リリース: 3.7

参考文献

関連する PR:

  • FlutterViewControllerのsplashScreenViewをnull可能にする