Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Bundle.main.resourcePath在我的flatter插件中返回nil,之前工作正常_Swift_Flutter_Flutter Plugin_.app - Fatal编程技术网

Swift Bundle.main.resourcePath在我的flatter插件中返回nil,之前工作正常

Swift Bundle.main.resourcePath在我的flatter插件中返回nil,之前工作正常,swift,flutter,flutter-plugin,.app,Swift,Flutter,Flutter Plugin,.app,我制作了一个测试颤振应用程序,它使用了我制作的一个插件,该插件仅检索.app中resources文件夹的路径,并将其返回到我的dart代码中 这在使用插件生成的示例项目中完全可以正常工作,并且以前在我的应用程序中也使用过。在此之后,我有一段时间没有使用这个插件,它也没有使用过,直到最近我才真正使用它,所以再次将它包含在我的代码中。现在这个插件似乎不适用于我添加到的任何项目,即使是新制作的项目 我的插件由以下dart代码组成: import 'dart:async'; import 'packa

我制作了一个测试颤振应用程序,它使用了我制作的一个插件,该插件仅检索.app中resources文件夹的路径,并将其返回到我的dart代码中

这在使用插件生成的示例项目中完全可以正常工作,并且以前在我的应用程序中也使用过。在此之后,我有一段时间没有使用这个插件,它也没有使用过,直到最近我才真正使用它,所以再次将它包含在我的代码中。现在这个插件似乎不适用于我添加到的任何项目,即使是新制作的项目

我的插件由以下dart代码组成:

import 'dart:async';

import 'package:flutter/services.dart';

class MacBundleUtils {
  static const MethodChannel _channel =
      const MethodChannel('mac_bundle_utils');

  static Future<String?> get getResourcesDir async {
    final String? resDir = await _channel.invokeMethod('getResourcesDir');
    return resDir;
  }
}
然后,我尝试检索此路径并使用以下一行将其打印到控制台:

print(await MacBundleUtils.getResourcesDir);
但是,这将返回以下错误:

Unhandled Exception: Null check operator used on a null value
我在这里做错了什么


谢谢。

在发布此问题后不久,我就找到了解决方案。 我试图过早地访问Bundle.main,因为我的代码位于void main()中。 在使用initState()加载后将代码移动到执行位置后,如下所示:

它没有问题

Unhandled Exception: Null check operator used on a null value
@override
void initState() { //for linux app, tells user if permissions aren't correct
  super.initState();

  WidgetsBinding.instance!.addPostFrameCallback((_) async {
    print(await MacBundleUtils.getResourcesDir);
  });
}