Flutter - 设备上的 CupertinoActionSheet / CupertinoActionSheetAction 背景颜色与模拟器不同

aar*_*nfg 5 flutter

我的 Scaffold 有深色背景色。

我正在使用showCupertinoModalPopup,CupertinoActionSheetCupertinoActionSheetAction用作孩子。

在模拟器中,操作表如下所示:

照片.

当我在我的实际 iphone 上运行该应用程序时,它看起来像这样:

照片

模拟中的操作表项目看起来是正确的。外观非常白。

但是,在设备上,在设备上更加透明,因此更难看到。

两个都 CupertinoActionSheetCupertinoActionSheetAction没有颜色或透明度级属性

关于这里发生了什么的任何想法?


颤振医生:

Doctor summary (to see all details, run flutter doctor -v):
[?] Flutter (Channel beta, v0.11.7, on Mac OS X 10.13.6 17G65, locale en-US)
[?] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[?] iOS toolchain - develop for iOS devices (Xcode 10.1)
[?] Android Studio (version 3.2)
[?] VS Code (version 1.29.0)
[?] Connected device (3 available)
Run Code Online (Sandbox Code Playgroud)

Ale*_*dar 0

这仍然是一个问题:

  • Flutter(频道稳定,v1.12.13+hotfix.8)
  • Mac OS X 10.15.3
  • Xcode 11.2.1

我猜这是 Flutter 中的一个错误。或者它可能是一个功能,这是我根据此 PR(GitHub 链接)得出的结论。如果你确实需要修复它,你需要直接修改 flutter 中的代码,在/flutter/packages/flutter/lib/src/cupertino/action_sheet.dart,build方法内CupertinoActionSheetAction


    return GestureDetector(
      // ...
      child: ConstrainedBox(
        // ...
        child: Semantics(
          button: true,
          child: Container(
            // add decoration property
            decoration: BoxDecoration(
              color: CupertinoDynamicColor.resolve(CupertinoColors.secondarySystemGroupedBackground, context),
              borderRadius: BorderRadius.circular(_kCornerRadius),
            ),
            // ...
Run Code Online (Sandbox Code Playgroud)

注意 1:这在 iOS 的浅色和深色模式下都适用。

注2:我不建议您这样做。:)