我在 Chrome 上调试 Flutter Web 应用程序时遇到了一个特殊问题。我的开发设置如下:
颤振版本:3.27.0
飞镖版本:3.6.0
编辑器:Visual Studio Code (1.95.3)
操作系统:macOS (Apple M2)
浏览器:Chrome (131.0.6778.139)
问题描述
我直接从 Flutter API 官方页面(Form Class Documentation)复制了 Form 示例,并使用 Flutter 的 Web 调试模式在我的环境中运行它。但是,当我尝试用鼠标单击文本输入字段时,遇到以下错误:
DartError: Assertion failed: org-dartlang-sdk:///lib/_engine/engine/pointer_binding/event_position_helper.dart:70:10
targetElement == domElement
"The targeted input element must be the active input element"
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:3 throw_
errors.dart:288
dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 110:39 assertFailed
profile.dart:110
dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 110:39 _computeOffsetForInputs
profile.dart:110
lib/_engine/engine/pointer_binding/event_position_helper.dart 38:14 computeEventOffsetToTarget
event_position_helper.dart:38
lib/_engine/engine/pointer_binding.dart 1088:30 [_convertEventsToPointerData]
pointer_binding.dart:1088
lib/_engine/engine/pointer_binding.dart 1016:9
pointer_binding.dart:1016
lib/_engine/engine/pointer_binding.dart 948:7
pointer_binding.dart:948
lib/_engine/engine/pointer_binding.dart 541:9 loggedHandler
pointer_binding.dart:541
dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 212:27 _callDartFunctionFast1
直接在 Flutter 官方文档的嵌入示例上运行相同的代码片段时,我没有遇到此问题。
重现步骤
观察
问题
提前谢谢您!
这不仅仅是您环境中的问题,也是最近 3.27 版本的问题。 Flutter 问题跟踪器 here 上已经填写了有关此问题的问题。
回答您的问题:
这些交互式代码示例通过将
dartpad.dev
嵌入到页面来使用它。 AFAIK,dartpad.dev
仍在使用 Flutter 之前的稳定版本,即 3.24.5
和 Dart 3.5.4
。我最好的猜测是这个版本中不存在错误。
您可以等待热修复(即
3.27.1
或更高版本),其中(我很确定)将包含此问题的修复。但目前还没有推出此修补程序的时间表。至少,在发布此答案时尚不清楚。
另一种方法是降级/升级您的 Flutter 安装。您可以尝试 3.24.5(因为 darted 使用它并且此代码在那里工作),或者您可以尝试
master
通道,因为团队提到它已修复(关于此事的 comment)。