Skip to content

Instantly share code, notes, and snippets.

@Atsumi3
Last active February 13, 2023 09:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Atsumi3/8347c544bb96bae6ec6fe3bba546e9e7 to your computer and use it in GitHub Desktop.
Save Atsumi3/8347c544bb96bae6ec6fe3bba546e9e7 to your computer and use it in GitHub Desktop.
UIViewとしてFlutter Widgetを表示するView
import UIKit
import Flutter
@IBDesignable
class FlutterView: UIView {
@IBInspectable
var routeName: String = "" {
didSet {
setupFlutterView()
}
}
private var flutterView: UIView? = nil
override func layoutSubviews() {
super.layoutSubviews()
setupFlutterView()
}
private func setupFlutterView() {
flutterView?.removeFromSuperview()
let flutterViewController = FlutterViewController(
project: nil,
initialRoute: routeName,
nibName: nil,
bundle: nil
)
flutterViewController.view.translatesAutoresizingMaskIntoConstraints = false
guard let flutterView = flutterViewController.view else {
return
}
self.flutterView = flutterView
addSubview(flutterView)
NSLayoutConstraint.activate([
flutterView.topAnchor.constraint(equalTo: topAnchor),
flutterView.bottomAnchor.constraint(equalTo: bottomAnchor),
flutterView.leadingAnchor.constraint(equalTo: leadingAnchor),
flutterView.trailingAnchor.constraint(equalTo: trailingAnchor),
])
flutterView.layoutIfNeeded()
}
}
@Atsumi3
Copy link
Author

Atsumi3 commented Feb 13, 2023

routeName には FlutterのMaterial Appで設定している、route path を入れてください。

widgetで切ると良さそう
/widget/hoge_widget

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment