Supongamos que está escribiendo el componente IOS de un complemento de Flutter en Swift.
Tienes tu archivo MyFlutterPlugin.swift abierto en XCode.
Para que sepamos de lo que estamos hablando de lo mismo, es el archivo que se ve así:
public class MyFlutterPlugin: NSObject, FlutterPlugin { public static func register(with registrar: FlutterPluginRegistrar) { let channel = FlutterMethodChannel(name: "my_flutter_plugin", binaryMessenger: registrar.messenger()) let instance = SwiftMetronomeFlutterPlugin() registrar.addMethodCallDelegate(instance, channel: channel) } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { // ... } }Este archivo existe en el disco en:
[tu_plugin_nombre_del_proyecto]/ios/classes/MyFlutterPlugin.swift
¿Cómo podría agregar un recurso, por ejemplo, un archivo de audio (WAV), de modo que se pueda hacer referencia a él desde MyFlutterPlugin.swift?
En una aplicación IOS normal (no Flutter), logré esto simplemente arrastrando el archivo WAV a XCode, donde se encuentra junto a ViewController.swift (en la misma carpeta), y lo hice referencia desde ViewController de esta manera:
let clack_Path = Bundle.main.path(forResource: "clack", ofType: "wav") let clack_URL = URL(fileURLWithPath: clack_Path!)Pero, si pruebo el mismo enfoque desde MyFlutterPlugin.swift (colocando el archivo de audio junto a MyFlutterPlugin.swift), obtengo un error que indica que clack_Path es nulo.
Entonces, ¿dónde está el lugar correcto para colocar el archivo y cómo referenciarlo correctamente?
No puedo encontrar ningún ejemplo de código, tutoriales o documentación (al menos ninguno que reconozca como útil) sobre este problema específico. Con suerte, es posible hacerlo en IOS... Ya tengo los recursos incluidos y estoy trabajando en el lado de Android del complemento.
Prueba esto: https://docs.flutter.dev/development/ui/assets-and-images#loading-flutter-assets-in-ios
En resumen, en primer lugar, coloque su archivo como un activo Flutter normal (en lugar de un activo ios/android). Luego, use el enfoque en el enlace para acceder a él.