AlexV's Blog

Welcome to my home.

Flutter 踩坑瞎记

在群里会碰到各种各样的奇葩问题,每个版本都或多或少带点坑。

稍微记录下,否则下次可能会忘记何时出现的。

遇到的疑难杂症

didChangeAppLifecycleState 中获取剪贴板数据为空(在 Android 11 上非常明显)

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.resumed) {
    SchedulerBinding.instance.addPostFrameCallback((_) {
      // 读取剪贴板
    });
  }
}

Text 中英文混排,如何对齐?

Text(
  textHeightBehavior: TextHeightBehavior(
    applyHeightToLastDescent: false,
  ),
)

在使用 Animation 的时候,突然间出现了 parent != null 或者 called on null 的错误

这个问题源自于两个人的示例,在他们的代码中,发现他们将 AnimationController 进行了向下传递再绑定的操作。一个出现了 RenderBox 计算空调用的错误,一个出现了 Animationparent 为空的错误。

经过几个步骤的排查,基本断定是因为传入的 Widget 被重新创建了 Element 。很巧,两人的 Stateless/StatefulWidget 都不是终值。在绑定了 TickerProvider 的页面更新时,由于 Element 被重建了,导致了 controller 的丢失,最终空调用。

Android 打包时缺少 debug 或 profile 文件

Android Gradle Plugin 4.x 的深渊巨坑,三种解决方案:

  • 将 Flutter 升级到 2.x,该问题貌似已经被解决;
  • 降回 3.6.4;
  • 每次打包时,先构建 debug/profile ,再构建 release。

各个稳定版本中存在的问题

1.20.x

1.17.x

点赞