Flutter iOS 模块无法访问新的 Swift 文件并且打印不工作

Posted

技术标签:

【中文标题】Flutter iOS 模块无法访问新的 Swift 文件并且打印不工作【英文标题】:Flutter iOS module can't access new Swift file and print not working 【发布时间】:2020-11-29 08:49:38 【问题描述】:

我正在使用Flutter 应用程序,需要从中调用本机ios 代码。我在应用程序的iOS 模块中添加了一个新的Swift 文件,但它无法从AppDelegate 访问它。我也尝试打印一些日志语句,但打印不起作用。

每次我尝试从AppDelegate 访问新文件时,都会出现以下错误:

use of unresolved identifier 'NewFile'

AppDelegate didFinishLaunchingWithOptions 方法如下所示:

let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let testChannel = FlutterMethodChannel(name: "com.test.example/example",
                                          binaryMessenger: controller.binaryMessenger)
testChannel.setMethodCallHandler(
  [weak self] (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
    guard call.method == "testExample" else 
      print("can't call testExample method")
      result(FlutterMethodNotImplemented)
      return
    
    print("can call testExample method")
    NewFile() //This is the new file I am trying to access
    result(10) //10 is just for testing
)

为什么它不访问与AppDelegate 在同一目录中创建的NewFile.swift?还有为什么print 语句不向控制台记录任何内容?

我正在使用 Visual Studio Code。

我应该添加配置或链接以允许 Visual Studio 代码访问我的文件并记录我的打印语句吗?

【问题讨论】:

最好展示一些你的代码! @Fattie 我添加了一些代码和更多细节 好的,什么是“NewFile()”?请为此粘贴代码,并解释您如何包含它(或任何过程)。这可能是一些简单的事情,例如您忘记将其标记为公开,或者?? 这是一个简单的类,只是为了实现一些第三方自动调用的功能。该第三方需要具有特定名称的单独类。这个名字当然不是NewFile,我这里只是举个例子 很可能你犯了“你忘记了公众”的错误,或者,它实际上没有以正确的方式包含(例如,像“你需要使用 Blah在消费阶层”。祝你好运! 【参考方案1】:

似乎应该从 Xcode 而不是 Visual Studio Code 向 iOS 模块添加新文件。当我从 Xcode 添加新文件时,它可以轻松访问它。

iOS 中的日志语句似乎也只适用于 Xcode。

【讨论】:

以上是关于Flutter iOS 模块无法访问新的 Swift 文件并且打印不工作的主要内容,如果未能解决你的问题,请参考以下文章

无法访问“io.flutter.embedding.android.FlutterActivity”的超类型“android.arch.lifecycle.LifecycleOwner”

原生(iOS)与Flutter混合开发步骤

原生(iOS)与Flutter混合开发步骤

原生(iOS)与Flutter混合开发步骤

原生(iOS)与Flutter混合开发步骤

flutter工具无法访问文件