splashScreenView de iOS FlutterViewController ahora admite nulos
El splashScreenView de FlutterViewController cambió de nonnull a nullable.
Resumen
#La propiedad splashScreenView de FlutterViewController ha
sido cambiada de nonnull a nullable.
Declaración antigua de splashScreenView:
@property(strong, nonatomic) UIView* splashScreenView;
Nueva declaración de splashScreenView:
@property(strong, nonatomic, nullable) UIView* splashScreenView;
Contexto
#Antes de este cambio, en iOS la propiedad splashScreenView devolvía nil
cuando no se establecía ninguna vista de pantalla de inicio (splash screen), y
establecer la propiedad en nil eliminaba la vista de pantalla de inicio.
Sin embargo, la API splashScreenView estaba marcada incorrectamente como nonnull.
Esta propiedad se utiliza con mayor frecuencia al realizar la transición a
vistas de Flutter en escenarios de integración add-to-app en iOS.
Descripción del cambio
#Aunque en Objective-C era posible solucionar temporalmente la
anotación incorrecta nonnull estableciendo splashScreenView
en
una UIView nil, en Swift esto causaba un error de compilación:
error build: Value of optional type 'UIView?' must be unwrapped to a value of type 'UIView'
La PR #34743 actualiza el atributo de la propiedad a
nullable.
Puede devolver nil y se puede establecer en nil para
eliminar la vista tanto en Objective-C como en Swift.
Guía de migración
#Si splashScreenView se almacena en una variable UIView en Swift,
actualízala a un tipo opcional UIView?.
Código antes de la migración:
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'
Código después de la migración:
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 {
}
Timeline
#En versión estable: 3.7
Referencias
#PR relevante:
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.