在群里会碰到各种各样的奇葩问题,每个版本都或多或少带点坑。
稍微记录下,否则下次可能会忘记何时出现的。
遇到的疑难杂症
Text
中英文混排,如何对齐?
Text(
textHeightBehavior: TextHeightBehavior(
applyHeightToLastDescent: false,
),
)
在使用 Animation
的时候,突然间出现了 parent != null
或者 called on null
的错误
这个问题源自于两个人的示例,在他们的代码中,发现他们将 AnimationController
进行了向下传递再绑定的操作。一个出现了 RenderBox
计算空调用的错误,一个出现了 Animation
的 parent
为空的错误。
经过几个步骤的排查,基本断定是因为传入的 Widget
被重新创建了 Element
。很巧,两人的 Stateless/StatefulWidget
都不是终值。在绑定了 TickerProvider
的页面更新时,由于 Element
被重建了,导致了 controller 的丢失,最终空调用。
Android 打包时缺少 debug 或 profile 文件
Gradle 6.x 的深渊巨坑,两种解决方案:
- 降回 5.6.4
- 每次打包时,先构建 debug/profile ,再打 release。
各个稳定版本中存在的问题
1.20.x
- InteractiveViewer 手势缩放几乎无法使用,相关 issues:
- Gradle plugin 4.0 无法正常 build release。flutter/flutter#58247
- FlutterView 需要接入 AutoFocus 相关 API,这项改动与 Boost 开发有关。alibaba/flutter_boost#814
1.17.x
- Deprecated accentIconTheme API usage flutter/flutter#56639
- iOS OpenGL 生命周期不兼容 flutter/flutter#60196
ZoomPageTransition
会导致新页面 build 三次 flutter/flutter#58686FadeUpwardsTransition
->ZoomPageTransition
flutter/flutter#51538WAKE_LOCK
权限异常地被请求 flutter/flutter#49912- 自1.17起,调用
configureFlutterEngine
时需要 super。此前不用,如果调用了会造成 plugins 二次注册。