过去几周,我分享了如何创建覆盖Windows, Linux, Android, Web的Flutter一维码,二维码插件,使用的编程语言包括C++,Java,JavaScript和Dart。本周将分享使用Swift实现Flutter iOS和macOS插件。
Flutter插件下载
https://pub.dev/packages/flutter_barcode_sdk
感兴趣的可以like下。
Flutter iOS, macOS插件实现
上周为了实现Linux插件,开发平台从Windows切换到Linux。本周要实现macOS和iOS插件,开发平台切换到macOS。
iOS
初始化插件模板:
flutter create --template=plugin --platforms=ios .
这条命令会生成一个flutter_barcode_sdk.podspec文件和Classes目录。flutter_barcode_sdk.podspec是工程配置文件,Classes包含了平台相关的初始代码。
打开工程配置文件添加依赖库。这里有两种方法:
-
添加
dependency:s.dependency 'DynamsoftBarcodeReader' -
添加
vendored_frameworks:s.vendored_frameworks = 'DynamsoftBarcodeReader.framework'
这里的差别是dependency可以触发pod install来安装依赖,而vendored_frameworks需要把依赖的framework放在本地。Flutter对上传的包有100 MB的尺寸限制,如果使用vendored_frameworks可能会因为尺寸过大无法上传。如果使用dependency编译失败,可以下载依赖库,并在配置文件中设置vendored_frameworks。
打开Classes/SwiftFlutterBarcodeSdkPlugin.swift编写Swift代码。
导入依赖库,完成对象初始化:
import DynamsoftBarcodeReader
public override init() {
super.init()
let lts = iDMLTSConnectionParameters()
lts.organizationID = "200001"
reader = DynamsoftBarcodeReader(licenseFromLTS: lts, verificationDelegate: self)
reader!.initRuntimeSettings(with: "{\"ImageParameter\":{\"Name\":\"Balance\",\"DeblurLevel\":5,\"ExpectedBarcodesCount\":512,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_SCAN_DIRECTLY\"}]}}", conflictMode: EnumConflictMode.overwrite, error:nil)
let settings = try! reader!.getRuntimeSettings()
settings.barcodeFormatIds = Int(EnumBarcodeFormat.ONED.rawValue) | Int(EnumBarcodeFormat.PDF417.rawValue) | Int(EnumBarcodeFormat.QRCODE.rawValue) | Int(EnumBarcodeFormat.DATAMATRIX.rawValue)
reader!.update(settings, error: nil)
reader!.setModeArgument("BinarizationModes", index: 0, argumentName: "EnableFillBinaryVacancy", argumentValue: "0", error: nil)
reader!.setModeArgument("BinarizationModes", index

本文介绍了如何使用Swift开发Flutter iOS和macOS插件,支持一维码和二维码识别。内容包括Flutter插件下载、iOS和macOS的实现步骤,如初始化插件模板、添加依赖库、编写Swift代码、处理权限问题等。
最低0.47元/天 解锁文章
1593

被折叠的 条评论
为什么被折叠?



