Flutter Web 调试问题: Assertion Failed on Text Input Click in Chrome (Flutter 3.27.0, Dart 3.6.0)

前置条件

  • Flutter 版本: 3.27.0 / 3.27.1
  • Dart 版本: 3.6.0
  • 编译器: Android Studio Ladybug | 2024.2.1 Patch 3
  • 操作系统: macOS Sequoia 15.2 (Apple M2) / Windows 11 专业版 23H2
  • 浏览器: Chrome (131.0.6778.205)

问题描述

直接从 Flutter API 官方页面(Form Class Documentation)复制 Form 示例,并使用 Flutter 的 Web 调试模式运行。

尝试用鼠标单击文本输入时,遇到以下错误:

这个问题是 Flutter 3.27.0 / 3.27.1 的缺陷,官方已经在 Flutter 3.28 版本修复,后续升级到 Flutter 3.28 即可解决此问题。

参考链接


Could not find a command named "/data/Android/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot"

经过多次的 Flutter 版本升级,以前的老项目脚本在执行 flutter pub get 相关的命令时候报错如下:

解决方法为删除项目下的所有 pubspec.lock 文件即可。

参考链接


Flutter 错误:找不到名为 frontend_server.dart.snapshot 的命令

Caught error: Unsupported operation: Platform._operatingSystem

Flutter 代码运行在 Chrome 上的时候报错 “Caught error: Unsupported operation: Platform._operatingSystem”。

报错的原因是因为代码中使用了 Platform.isIOSPlatform.isAndroid 等函数判断系统类型,可惜的是,这些函数并不能在 Chrome 上运行。 

修改方法就是自己封装一个自定义工具类,先使用 kIsWeb 排除一下浏览器。参考如下:

参考链接


Flutter Web 警告 Local variable for "serviceWorkerVersion" is deprecated

升级到 Flutter 3.22.0 之后,在 Chrome 上运行 Flutter Web 应用程序时收到以下警告:

这个警告的原因是,新版本的 Flutter Web 应用加载 service_worker.js 的方式发生了变化,原来的加载脚本被 {{flutter_bootstrap_js}} 替代。

调整为新的初始化代码即可解决此问题。

原始的代码如下:

调整后的代码如下:

参考链接


Flutter error G5FE39F1E: Type 'UnmodifiableUint8ListView' not found

问题描述

原本在 macOS 开发的项目,现在 Windows 10 运行时报如下错误:

解决方法

参考链接


Flutter Error: Type ‘UnmodifiableUint8ListView‘ not found

Flutter调试 iOS 真机卡在启动页面,报错 “try setting IDEPreferLogStreaming=YES”

最近,Flutter 升级到最新版本之后,iOS 真机调试的时候持续卡住在启动页面。

Xcode 输出如下报错信息:

Flutter 系统信息如下:

继续阅读Flutter调试 iOS 真机卡在启动页面,报错 “try setting IDEPreferLogStreaming=YES”

make: *** No rule to make target `sqlite_cfg.h', needed by `.target_source'

前置条件

  • macOS Sonoma (14.4.1) 
  • MacBook Pro 2023-Apple M2 Pro (4能效核、8性能核、32GB内存、2TB磁盘)
  • Homebrew (4.2.18 或更高版本)
  • Xcode Version 15.3 (15E204a)
  • DevEco Studio NEXT Developer Preview2 4.1.3.700

错误信息

源代码编译 sqlite3

或者使用 pod 安装 sqlite3 报错:

观察源代码目录,也确实没有 sqlite_cfg.h 文件生成。

继续阅读make: *** No rule to make target `sqlite_cfg.h', needed by `.target_source'

Flutter: Xcode error “Unable to boot the Simulator“

使用 flutter、Android Studio ,通过iOS模拟器运行项目,一直一切正常。

某次重启后无法启动模拟器,报错信息如下:

解决方法,亲测有效:

macOS 14.4.1以及更高版本:
进入 “系统设置”→“通用”→“存储空间”→“开发者” 删除 “XCode 缓存” 。

在 macOS 13 及更高版本上:
进入 “系统设置”→“常规”→“存储”→“开发人员”
删除“开发者缓存”

在 macOS 12 及更低版本上:
转到“关于本机”→“存储”→“管理”→“开发人员”

参考链接


Flutter: XCode error “Unable to boot the Simulator

为容器添加基于BoxDecoration的labelText (作为TextField)

TextField 有一个很好的方法来在它的 BoxDecoration 装饰上放置一个文本标签,如下:

通过以下方式:

有没有办法在 Container 的其他 BoxDecoration 上实现同样的效果?例如,我想指定标签"XP":

但是 Flutter 没有为 BoxDecoration 提供 labelText (仅存在于 InputDecoration )。

我们可以使用 InputDecorator 作为父对象来完成上述需求,如下:

输出

参考链接


Flutter TextField/TextFormField垂直方向完整填充父容器高度(或者全屏显示)

正常情况下,我们使用 TextField/TextFormField 的时候,都是单行的表单或者指定行数的情况。但是有时候,我们希望能自适应父容器的高度,或者高度动态自适应变化。

那么我们应该怎么操作呢?

继续阅读Flutter TextField/TextFormField垂直方向完整填充父容器高度(或者全屏显示)