Flutter 开发的常见错误

720 阅读3分钟

1、如何创建6大平台应用(windows,macos,linux,ios,android,web)

如何通过图形界面创建,默认是勾选了6大平台。发现创建后,只有ios,android,web三个平台 image.png

解决办法,通过命令行之前创建 create my_app_1 --platforms=windows,macos,linux,ios,android,web

All done! 6大平台壳工程都用了 image.png

而且还有学习资料 You can find general documentation for Flutter at: docs.flutter.dev/ Detailed API documentation is available at: api.flutter.dev/ If you prefer video documentation, consider: www.youtube.com/c/flutterde…

如果你通过flutter run命令运行iOS平台,还会遇到证书的错误

image.png

证书这块建议您使用自动签名,避免麻烦的导出,这个非常简单,只需要两步

  1. 新建测试bundle id
  2. 增加设备

1、Flutter_SDK/flutter_SDK_3.7.11/packages/flutter_tools/bin/podhelper.rb

2、Target->Runner->Build Phases->Run Script /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

3、iOS->Flutter->Generated.xcconfig

2、报错现象(找不到参数或方法找不到)

image.png

解决办法:

  • 从报错上看是flutter相关的库报错,大概率是Flutter版本不一致造成
  • 切换正确的Flutter版本号
    • 本地切换
    • 工具切换

本地切换

  • Flutter 版本 image.png

  • Dart 版本 image.png

如果已确认Flutter 版本没有问题,扔报错,可能是库依赖的版本太新或太旧导致的,根本原因是模糊依赖造成的版本依赖错误。可以通过找到依赖库->降级或升级版本号解决。(flutter 工程pubspec.yaml的依赖版本控制没有指定版本,可能是允许更新到新版本导致的不兼容)

image.png

解决办法

  • 找到报错的仓库,确实依赖的版本控制
  • 降低或升级仓库依赖的版本或指定仓库的依赖

示例: Flutter Error: The getter 'draggableProgressBar' isn't defined for the class 'ChewieController'. 找到版本更新记录 pub.dev/packages/ch… 确认依赖的版本号 image.png

工程中的错误写法 image.png

3、报误现象(找不到目录)

image.png

解决办法

  • 从报错上看是项目应用的dio库的版本造成的
  • 检查一下dio的版本,发现版本依赖的不是5.3.2的版本,大概率是曾经切换过其他项目或分支,有缓存造成的
  • 清理缓存:
    • 办法1 执行下 flutter clean (暂未尝试)
    • 办法2 报错已很明显,删除缓存目录
      • 1、找到路径,删除缓存【在Mac中,Flutter的.pub-cache路径是/Users/[你的用户名]/.pub-cache】
      • 2、执行pug get
      • 3、执行run 【中间可能有多次报错,不要管,可能是网络的拉取的问题】
      • 4、最终工程跑起来

4、flutter type 'Null' is not a subtype of type 'IOSApp' of 'app'

  • 这种情况通常发生在,运行iOS 设备但还没有跑起来,就终止报出来的错误。通常和环境有关,最终是可以run起来的。

5、iOS 报签名错误

No Provisioning Profile was found for your project‘s Bundle Identifier or your device

  1. 证书没有问题
  2. 可能是缓存问题
  3. 执行 flutter clean 清理缓存 更多见:blog.csdn.net/adojayfan/a…

6、IOS&Flutter:dyld: Library not loaded: @rpath/App.framework

iOS本地依赖Flutter源码运行App,在真机上报错:flutter Library not loaded: '@rpath/App.framework/App'

在iOS工程中找到 Target Support Files -> Pods-xxx -> Pods-xxx-frameworks

手动增加 install_framework App.framework

image.png

重新编译就可以正常跑起来了。

此种解决方式存在弊端:每次工程进行pod install以后Pods-xx-frameworks.sh 文件将会被重置,添加的代码会被删除。基本可以断定是Ruby 或 CocoaPods 不兼容导致的,网上有尝试 更新Ruby 或 CocoaPods 的版本,有可能会解决。本人未尝试,如果你有好的解决办法,欢迎留言。

flutter issue github.com/flutter/flu…

CocoaPods issue github.com/CocoaPods/C…

7、升级 xcode15.1

1、run iOS17的设备 报 Could not run build/ios/iphoneos/Runner.app Could not run build/ios/iphoneos/Runner.app on xxx. Try launching Xcode and selecting "Product > Run" to fix the problem: open ios/Runner.xcworkspace

Error launching application on xxx的iPhone.

根本原因是IOS17和Xcode的配置变化引起的,需要更新Flutter的SDK版本到3.13以上就可以解决。【暂未尝试】 blog.csdn.net/adojayfan/a…

2、Xcode15 Library ‘iconv.2.4.0‘ not found blog.csdn.net/wyz67008395…

3、xcode15 Assertion failed: (aliasSectionNum == sectionNum && "alias and its target must be located in the same section"), function assignAliasAtomOffsetInSection, file Layout.cpp, line 3248. blog.csdn.net/wyz67008395…