説明
バグレポート
iOS FlutterViewControllerのsplashScreenViewがnull可能になりました
まとめ
のFlutterViewController
財産splashScreenView
もっている
から変更されましたnonnull
にnullable
。
の古い宣言splashScreenView
:
@property(strong, nonatomic) UIView* splashScreenView;
の新たな宣言splashScreenView
:
@property(strong, nonatomic, nullable) UIView* splashScreenView;
コンテクスト
この変更が行われる前は、iOS ではsplashScreenView
返された財産nil
スプラッシュ スクリーン ビューが設定されていない場合、および
プロパティをに設定するnil
スプラッシュ スクリーン ビューを削除しました。
しかしsplashScreenView
API が誤ってマークされていました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
に保存されていますUIView
Swiftの変数、
オプションのタイプに更新する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可能にする