Commit 52fb691e authored by jzhang's avatar jzhang

根据反馈更新代码示例

parent 520ed3df
...@@ -5,17 +5,11 @@ ...@@ -5,17 +5,11 @@
// Created by Jay Zhang on 2022/6/2. // Created by Jay Zhang on 2022/6/2.
// //
import Flutter
import FlutterPluginRegistrant
import UIKit import UIKit
@main @main
class AppDelegate: UIResponder, UIApplicationDelegate { class AppDelegate: UIResponder, UIApplicationDelegate {
lazy var flutterEngine = FlutterEngine(name: "my flutter engine")
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
flutterEngine.run()
GeneratedPluginRegistrant.register(with: flutterEngine)
return true return true
} }
......
...@@ -55,12 +55,10 @@ class BaseLandingVC: UIViewController { ...@@ -55,12 +55,10 @@ class BaseLandingVC: UIViewController {
} }
func showFlutterScreen() { func showFlutterScreen() {
if let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine { let scanVC = FlutterViewController(engine: viewModel.flutterEngine, nibName: nil, bundle: nil)
let scanVC = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
scanVC.modalPresentationStyle = .overFullScreen scanVC.modalPresentationStyle = .overFullScreen
navigationController?.pushViewController(scanVC, animated: true) navigationController?.pushViewController(scanVC, animated: true)
} }
}
@IBAction func startAction(_: Any) { @IBAction func startAction(_: Any) {
if checkCameraPermission() == false { if checkCameraPermission() == false {
......
...@@ -5,14 +5,16 @@ ...@@ -5,14 +5,16 @@
// Created by Jay Zhang on 2022/6/5. // Created by Jay Zhang on 2022/6/5.
// //
import Foundation
import Flutter import Flutter
import FlutterPluginRegistrant
import Foundation
class ViewModel { class ViewModel {
enum Posture: Int { enum Posture: Int {
case cradle = 0 case cradle = 0
case lying = 1 case lying = 1
} }
/// 语言枚举,enum代表语言包文件名,rawValue代表语言选项 /// 语言枚举,enum代表语言包文件名,rawValue代表语言选项
enum Language: String, CaseIterable { enum Language: String, CaseIterable {
case english = "English" case english = "English"
...@@ -30,6 +32,7 @@ class ViewModel { ...@@ -30,6 +32,7 @@ class ViewModel {
} }
} }
var flutterEngine: FlutterEngine!
var posture: Posture = .cradle var posture: Posture = .cradle
var string: StringModel! var string: StringModel!
...@@ -59,36 +62,34 @@ class ViewModel { ...@@ -59,36 +62,34 @@ class ViewModel {
} }
var methodChannel: FlutterMethodChannel! var methodChannel: FlutterMethodChannel!
var completeHandler: (()->())? var completeHandler: (() -> Void)?
var teachingEndHandler: (()->())? var teachingEndHandler: (() -> Void)?
init() { init() {
language = .english language = .english
setupText() setupText()
methodChannel = setupFlutter() runFlutterEngine()
methodChannel = setupMethodCallHandler()
}
func runFlutterEngine() {
flutterEngine = FlutterEngine(name: "my flutter engine")
flutterEngine.run()
GeneratedPluginRegistrant.register(with: flutterEngine)
} }
func setupFlutter() -> FlutterMethodChannel { func setupMethodCallHandler() -> FlutterMethodChannel {
let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine let binaryMessenger = flutterEngine.binaryMessenger
let methodChannel = FlutterMethodChannel(name: "com.wmdigit.breastcoachai.native", let methodChannel = FlutterMethodChannel(name: "com.wmdigit.breastcoachai.native", binaryMessenger: binaryMessenger)
binaryMessenger: flutterEngine!.binaryMessenger)
methodChannel.setMethodCallHandler { [weak self] methodChannel.setMethodCallHandler { [weak self]
(call: FlutterMethodCall, result: @escaping FlutterResult) in (call: FlutterMethodCall, result: @escaping FlutterResult) in
if let strongSelf = self { if let self = self {
switch call.method { switch call.method {
case "init": case "init":
result(viewModel.flutterArguments) let params = self.initLanguagePack() // 生成JSON格式的语言包
result(params) // 初始化
case "teachingEnd": case "teachingEnd":
strongSelf.methodChannel.invokeMethod("dispose", arguments: nil) self.methodChannel.invokeMethod("dispose", arguments: nil)
// ["totalDuration": 3, "reasonText": Concern about my personal privacy, "status": incomplete, "incompleteReasonCode": 2]
let argument: [String: Any] = try! JSONSerialization.jsonObject(with: (call.arguments as! String).data(using: .utf8)!) as! [String: Any]
let status: String = argument["status"] as! String
if status == "complete" {
strongSelf.completeHandler?()
return
}
strongSelf.teachingEndHandler?()
default: default:
// Unrecognized method name // Unrecognized method name
print("Unrecognized method name: \(call.method)") print("Unrecognized method name: \(call.method)")
...@@ -98,6 +99,10 @@ class ViewModel { ...@@ -98,6 +99,10 @@ class ViewModel {
return methodChannel return methodChannel
} }
fileprivate func initLanguagePack() -> String {
return viewModel.flutterArguments
}
fileprivate func setupText() { fileprivate func setupText() {
let languageFile = "string_\(language)".appending(".json") let languageFile = "string_\(language)".appending(".json")
let path: String = Bundle.main.path(forResource: languageFile, ofType: nil)! let path: String = Bundle.main.path(forResource: languageFile, ofType: nil)!
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment