A Flutter plugin to restart the application.
The plugin works by creating a new instance of the Flutter Engine. The entry point of the Dart VM is executed again, while the underlying platform specific application keeps running. This is achieved as follows:
Recreating the FlutterActivity
.
Creating a new instance of FlutterViewController
& setting it as root view controller of the UIApplication
.
Add package to the dependencies section of the pubspec.yaml
:
dependencies:
restart: ^1.0.0
A single method call allows to terminate the Dart VM & restart execution from the entry point.
import 'package:restart/restart.dart';
// 🎉
restart();
Modify the MainActivity.kt
file in your Flutter project as follows:
+import android.content.Context
+import app.farmako.restart.RestartPlugin
import io.flutter.embedding.android.FlutterActivity
-class MainActivity: FlutterActivity()
+class MainActivity: FlutterActivity() {
+ override fun provideFlutterEngine(context: Context) = RestartPlugin.provideFlutterEngine()
+}
Modify the AppDelegate.swift
file in your Flutter project as follows:
import Flutter
import UIKit
+import restart
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
+ // --------------------------------------------------
+ RestartPlugin.generatedPluginRegistrantRegisterCallback = { [weak self] in
+ GeneratedPluginRegistrant.register(with: self!)
+ }
+ // --------------------------------------------------
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}