重现步骤
- iOS 16,系统设置——>显示——>缩放显示——>更大字体
- 从Flutter 3.19版本开始到最新版本Flutter3.22都存在这个问题
使用FittedBox进行屏幕适配,期望在不同尺寸的屏幕上展示的效果一致,发现了此问题;
文本渲染的单词每一个字符都不在一条基准线上
(英文翻译)
- iOS 16, System Settings -> Display -> Zoom Display -> Larger Font
- 从Flutter 3.19到最新版本Flutter3.22都存在这个问题
使用FittedBox进行屏幕适配,我们期望在不同尺寸的屏幕上展示的效果一致,并发现了此问题;
每个渲染文本单词的字符都不在同一基准线上
预期结果
实际结果
代码示例
代码示例
MediaQuery(
data: MediaQuery.of(context)
.copyWith(textScaler: TextScaler.noScaling, boldText: false),
child: FittedBox(
fit: BoxFit.scaleDown,
child: Container(
width: 375,
color: Colors.white,
alignment: Alignment.center,
child: const Text(
"Not sure if you have an account? Enter your email and we'll check for you.",
style: TextStyle(
fontSize: 13,
color: Colors.black,
decoration: TextDecoration.none,
fontWeight: FontWeight.w400,
height: 1.5,
),
textAlign: TextAlign.center,
),
),
),
)
截图或视频
截图/视频演示
[上传媒体在这里]
日志
- 无响应*
Flutter Doctor输出
医生输出
[✓] Flutter (Channel stable, 3.19.4, on macOS 14.3.1 23D60 darwin-x64, locale zh-Hans-CN)
• Flutter version 3.19.4 on channel stable at /Users/gkb/fvm/versions/3.19.4
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 68bfaea224 (3 months ago), 2024-03-20 15:36:31 -0700
• Engine revision a5c24f538d
• Dart version 3.3.2
• DevTools version 2.31.1
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
• Android SDK at /Users/gkb/Library/Android/sdk
• Platform android-34, build-tools 31.0.0
• ANDROID_HOME = /Users/gkb/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
• Xcode at /Applications/Xcode15.app/Contents/Developer
• Build 15C500b
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2023.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
[✓] VS Code (version 1.88.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.90.0
[✓] Connected device (4 available)
• iPhone 8 (mobile) • 22b25608cfe4991a38a9428c0800be9917ce91b1 • ios • iOS 16.6.1 20G81
8条答案
按热度按时间kknvjkwl1#
我设置了显示缩放如下:
设置 > 显示与亮度 > 显示缩放 > 缩放
然后我在Android和iOS应用的测试中看到了以下结果。
textScaler: TextScaler.noScaling
:问题出现textScaler: TextScaler.noScaling
的MediaQuery:问题出现flutter doctor -v (稳定版和主分支)
vd8tlhqk2#
cc @LongCatIsLooong for TextScaler
fruv7luv3#
这看起来不像是一个框架问题,因为框架无法控制单个字形的定位。
根据示例代码,我猜测这是一个渲染问题(在我的Android设备上无法重现这个问题)。
@huycozy,你介意分享一下在Android设备上发生这种情况的屏幕截图吗?我在Android测试设备上运行这段代码时,没有看到波浪形的文字。
@Doris1994,你是否使用了impeller?
啊,现在我看到了标题的变化。我认为问题是关于波浪形文字而不是缩放。
vktxenjb4#
@LongCatIsLooong 以下是在给定示例代码上的Android和iOS的演示;我将字体大小和显示大小都增加到了最大值,但文本没有缩放。
演示 Android 截图
| 设置 | Android |
| ------------ | ------------ |
|
|
|
但是再次检查后,我认为我错了。这里的实际问题是关于
text alignment
(您更新的新标题)。的确,在Android上文本对齐得很好(如我的演示截图),但在iOS上显示为锯齿状(在Flutter稳定版3.22.2上)。幸运的是,它似乎已经修复了,因为我不再看到了。
演示 iOS (3.22.2)
| 设置 | iOS |
| ------------ | ------------ |
|
|
|演示 iOS (master 3.23.0-13.0.pre.261)
eqzww0vc5#
是的,仅在iOS设备上存在一个问题,即启用了叶轮渲染。
kxeu7u2r6#
@huycozy Just verified on flutter channel master, 3.23.0-13.0.pre.277, the text display is normal.
mqxuamgl7#
是否有办法知晓是哪些提交和变更修复了此问题呢?等待3.23的稳定版还有很长一段时间,想在最小的变更下,尽快更新App解决此问题以降低对App使用者的影响,万分感谢~
(翻译结果)
是否有办法知道是哪些提交和变更修复了这个问题?距离3.23稳定版发布还有很长时间。我想在尽可能小的变更下尽快更新App来解决这个问题,以减少对App用户的影响。非常感谢!
at0kjp5o8#
您可以尝试在Flutter 3.22.2和master 3.23.x之间执行
git bisect
命令,以找到修复的提交。如果需要,还可以提交一个CP request请求进行热修复。