0

As per the Flutter documentation, the following steps are required to implement Flutter State Restoration in a Flutter iOS project:

  1. Open ios/Runner.xcodeproj in Xcode.
  2. Select Main.storyboard under Runner/Runner in the Project Navigator on the left.
  3. Select the Flutter View Controller under Flutter View Controller Scene in the view hierarchy.
  4. Navigate to the Identity Inspector in the panel on the right.
  5. Enter a unique restoration ID in the provided field.
  6. Save the project.

However, we are not using FlutterViewController in Main.storyboard. Instead, we use MainViewController, which extends UIViewController. In SceneDelegate, we have the following code:

class SceneDelegate: UIResponder {
    var window: UIWindow?
    lazy var flutterEngineManager = FlutterEngineManager.shared
    
    func insertMapViewIfNeeded() {
        if let mapView = mapController?.view {
            controller.view.insertContainedSubview(mapView)
        }
    }
}

extension SceneDelegate: UIWindowSceneDelegate {
    func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if (scene as? UIWindowScene) == nil { return }

        let flutterViewController = flutterEngineManager.flutterViewController
        guard let controller = window?.rootViewController else {
            return
        }
        
        if let appDelegate = UIApplication.shared.delegate as? AppDelegate,
           !appDelegate.appColdStarted {
            flutterViewController.loadDefaultSplashScreenView()
        }
        flutterViewController.isViewOpaque = false
        
        controller.addViewController(flutterViewController, toContainerView: controller.view)
    }
}

I have tried setting restorationIdentifier to MainViewController and FlutterViewController, but it does not work. When I debugged RestorationBucket in Flutter code, it was null. Can anyone help me achieve this?

Note: Flutter State Restoration changes are working with the Android app.

Shahbaz Hashmi
  • 2,631
  • 2
  • 26
  • 49

0 Answers0