Я пытаюсь использовать Flutter для написания мобильного приложения. К сожалению, мне нужно реализовать плагин Flutter, чтобы иметь возможность вызывать некоторые нативные API.
Objective-C слишком чужд для меня, поэтому я действительно предпочитаю использовать Swift (который я тоже не очень хорошо знаю, но он достаточно близок к Kotlin, чтобы я с ним знаком) для создания плагина.
Flutter установил скелет плагина, но сейчас я пытаюсь реализовать функцию обработчика метода:
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult)
Собственная функция, которую я пытаюсь использовать, имеет следующую подпись (сгенерированную с помощью gomobile):
FOUNDATION_EXPORT MobileapiDatabase* MobileapiReadDatabase(
NSString* filePath, NSString* password, NSError** error);
Хотя я не понимаю нескольких вещей:
- как вернуть ошибку, используя объект
result
?
- как сообщить, что метод не реализован?
- как использовать объект
error
встроенной функции?
Я могу найти только примеры Objective-C, ни один образец Swift, найденный Googling (единственный найденный образец, не обрабатывал ошибки или что-то еще).
Это то, что у меня так далеко:
public func handle(_ call: FlutterMethodCall,
result: @escaping FlutterResult) {
switch call.method {
case "getDb":
let args = call.arguments as! [String]
if args.count == 2 {
let error = NSError() // ERROR in next line
MobileapiReadDatabase(args[0], args[1], error)
// how to check if there was an error?
}
// TODO report wrong arguments
default:
// TODO report method not implemented
}
}
Был бы очень признателен за любую помощь.