You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter按钮跳转页面时终端报错但功能正常问题求助

Flutter跳转页面时Dalvik虚拟机错误的解决方案

问题回顾

你碰到的情况挺有意思:点击首页的浮动操作按钮跳转到带TextField的页面时,终端刷出一堆Dalvik的错误日志,但应用功能完全正常,输入啥的都没问题。报错内容是这样的:

E/dalvikvm( 1787): Could not find class 'android.view.inputmethod.CursorAnchorInfo$Builder', referenced from method io.flutter.plugin.editing.InputConnectionAdaptor.finishComposingText
W/dalvikvm( 1787): VFY: unable to resolve new-instance 411 (Landroid/view/inputmethod/CursorAnchorInfo$Builder;) in Lio/flutter/plugin/editing/InputConnectionAdaptor;
D/dalvikvm( 1787): VFY: replacing opcode 0x22 at 0x000e
D/dalvikvm( 1787): DexOpt: unable to opt direct call 0x0846 at 0x10 in Lio/flutter/plugin/editing/InputConnectionAdaptor;.finishComposingText

跳转的按钮代码是:

onPressed: () {
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SharedPreference1()));
},

为啥会出现这个错误?

说白了就是你的模拟器Android版本太老了!CursorAnchorInfo.Builder这个类是Android 5.0(API 21)才加进去的,而你用的模拟器系统版本低于API 21。Flutter的输入插件会尝试调用这个类来处理文本输入相关的逻辑,但低版本系统里找不到它,所以就抛出了这个找不到类的错误。不过好在Flutter做了兼容处理,所以功能不受影响,只是日志看起来闹心而已。

怎么解决?

给你几个可行的方案:

  • 升级模拟器系统:新建一个API 21及以上的Android模拟器,再跑应用,这个错误就直接消失了,这是最靠谱的解决办法。
  • 直接忽略:既然完全不影响功能,这个错误就是个“纸老虎”,只是日志输出而已,你完全可以不管它,继续开发就行。
  • 降级Flutter SDK(不推荐):如果非要用低版本模拟器,可以试试降级到Flutter 2.x的旧版本,那些版本的输入插件可能还没用到CursorAnchorInfo.Builder,但这样会错过Flutter的新特性和bug修复,不太建议。

顺便提下代码里的小细节(和错误无关,但能优化代码)

  • 你把_notesController1、_notesController2还有data都设成全局变量了,建议放到对应的State类里,避免全局状态带来的潜在问题,代码也更规范。
  • 你的State类叫Hero,但Flutter本身就有个Hero组件,重名容易混淆,建议改成SharedPreference1State这类更清晰的名字。

内容的提问来源于stack exchange,提问作者NevMthw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:52:44