Flutter与vscode分析异常错误处理

Flutter与vscode分析异常错误处理

使用Flutter和VSCode开发一段时间,之前一直使用v1.2.1进行开发,配合XCode调试ios代码,Android Studio调试安卓代码,一直相安无事,最近升级到v1.5.4-hotfix.2之后,遇到奇怪的现象,一周多没有解决,今天总算解决了,记录一下。

1、问题现象:

v1.5.4-hotfix.2下面,发现pubspec.yaml中定义的dependencies都正常通过flutter packages get能够下载,并且运行flutter run或者直接在vscode中运行APP都没有问题。

但是在vscode中,依赖的一些package在import的时候会出现红色错误提示(Target of URI doesn’t exist: ),对应class引用也会有错误提示(The method ‘xxxx’ isn’t defined for the class)。

实质上上面的import和引用都没有问题。

2、经过观察,和网上调查,都说packages get然后重启vscode可以解决,实际并没有。

但是通过重启vscode,发现刚刚打开工程的时候,在状态栏中提示【Analyzing】很快就结束了,不太正常。

观察vscode状态栏右边的警铃标记位【1】,点击能够看到错误信息:

1
Exception from the Dart analysis server: FileSystemException(path=/Users/user/workspace/ios/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/example/ios/.symlinks/plugins/flutter_test/exampl...

3、对于上面的错误,网上google,各种尝试,都没有解决。

重装了vscode、重装flutter、删除所有的flutter和dart以及pub的缓存,都没有解决。

无奈之下,重新降级flutter版本回到v1.2.1,发现问题解决,但是不少使用的依赖库已经更新到dart的2.2.0版本,必须手工处理太多plugin的版本兼容问题。

最终还是决定在执行flutter upgrade到v1.5.4-hotfix.2,但是升级之后,问题依旧,因此应该跟系统环境没有关系。

4、详细观察了一下警铃标记提示的错误信息,发现是跟ios的pod依赖产生的【.symlinks】目录有关,这个目录是之前通过xcode调试ios代码的时候遗留的,之前没有问题,可能flutter升级之后依赖有问题。

5、尝试删除【.symlinks】之后,重启vscode,发现之前不能正常工作的【Analyzing】恢复了正常。

6、选在IPhone模拟器,运行测试之后,发现在【example/ios】目录中又出现了【.symlinks】目录,xcode打开Runner工程,也能够在Pods依赖中发现对应功能。

这个问题应该只是在对plugin的example功能测试的时候会发生这种情况,也应该是跟v1.5.4-hotfix.2版本问题,不过不影响大局,测试ios之后及时手工删除【.symlinks】目录基本不影响工作了。

7、问题已经报告到flutter的Issue列表: https://github.com/flutter/flutter/issues/33592