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
} }
......
...@@ -16,7 +16,7 @@ class BaseLandingVC: UIViewController { ...@@ -16,7 +16,7 @@ class BaseLandingVC: UIViewController {
viewModel.teachingEndHandler = { [weak self] in viewModel.teachingEndHandler = { [weak self] in
self?.navigationController?.popToRootViewController(animated: true) self?.navigationController?.popToRootViewController(animated: true)
} }
viewModel.completeHandler = { [weak self] in viewModel.completeHandler = { [weak self] in
self?.toCompleteVC() self?.toCompleteVC()
} }
...@@ -55,13 +55,11 @@ class BaseLandingVC: UIViewController { ...@@ -55,13 +55,11 @@ 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 {
return return
......
...@@ -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"
...@@ -29,7 +31,8 @@ class ViewModel { ...@@ -29,7 +31,8 @@ class ViewModel {
setupText() setupText()
} }
} }
var flutterEngine: FlutterEngine!
var posture: Posture = .cradle var posture: Posture = .cradle
var string: StringModel! var string: StringModel!
...@@ -57,38 +60,36 @@ class ViewModel { ...@@ -57,38 +60,36 @@ class ViewModel {
let str = String(data: data!, encoding: String.Encoding.utf8) let str = String(data: data!, encoding: String.Encoding.utf8)
return str! return str!
} }
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 setupFlutter() -> FlutterMethodChannel { func runFlutterEngine() {
let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine flutterEngine = FlutterEngine(name: "my flutter engine")
let methodChannel = FlutterMethodChannel(name: "com.wmdigit.breastcoachai.native", flutterEngine.run()
binaryMessenger: flutterEngine!.binaryMessenger) GeneratedPluginRegistrant.register(with: flutterEngine)
}
func setupMethodCallHandler() -> FlutterMethodChannel {
let binaryMessenger = flutterEngine.binaryMessenger
let methodChannel = FlutterMethodChannel(name: "com.wmdigit.breastcoachai.native", binaryMessenger: 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