【问题标题】:flutter - widget with transparent background颤振 - 具有透明背景的小部件
【发布时间】:2019-05-29 18:56:33
【问题描述】:

我正在创建一个具有透明背景的 StatefulWidget。相同的代码是:

return Scaffold(
  body: Builder(
    builder: (context) => Material(
          color: Colors.black.withOpacity(0.75),
          child: new SafeArea(
            child: Center(
              child: Container(
                color: Colors.white,
                child: ListView(
                  children: <Widget>[
                    resetPasswordLabel,
                    inputFields,
                    doneButton(context),
                  ],
                ),
                height: 250.0,
                margin: EdgeInsets.only(left: 20.0, right: 20.0),
              ),
            ),
          ),
        ),
  ),
);

问题:当我使用 Navigator 打开此小部件时,透明颜色可见 1 - 2 秒,然后变为黑色背景。

输出:

接受的输出应该是:

请在这里帮助我。

【问题讨论】:

标签: dart flutter flutter-layout flutter-dependencies


【解决方案1】:

当你打开一个带有推送状态的新“页面”时,旧的“页面”或状态会被释放,直到你调用Navigator.pop(context)。如果您想要在您提供的屏幕截图中显示效果,请使用dialog

【讨论】:

  • 有什么办法可以让小部件的背景透明,以便用户可以看到上一屏内容?
  • 我不这么认为。
  • 总有办法控制每一个像素。您可能只需要编写一个自定义小部件。但请记住,所有其他小部件的源代码只需敲击一两次键!
【解决方案2】:

您可以创建一个自定义对话框并使用下面的行打开它...

Navigator.of(context).push(
    PageRouteBuilder(
        pageBuilder: (context, _, __) => CustomAlertDialog(), opaque: false),
);

opaque: false 将保持背景透明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2018-10-05
    • 2021-04-30
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多