【问题标题】:Fix RenderConstraintsTransformBox overflowed warning修复 RenderConstraintsTransformBox 溢出警告
【发布时间】:2022-01-10 17:43:06
【问题描述】:

我有一个超出显示屏尺寸的小部件,我想根据用户输入显示不同的部分。

使用此代码时:

Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.red,
      ...
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
            Transform.translate(
                offset: const Offset(-50, 0),  // offset hardcoded to -50
                child: Container(
                  width: 2000,
                  height: 100,
                  color: Colors.yellow,
                ),
            ...

小部件遵守约束,因此容器适合显示器。转换后,您会看到背景而不是小部件的延续。

我可以将小部件包装在 UnconstrainedBox 中:

UnconstrainedBox(
    alignment: Alignment.topLeft,
    child: Transform.translate(...)
)

这解决了问题,但会导致错误:

一个 RenderConstraintsTransformBox 溢出了 1500 像素 对。

我希望它溢出,我不认为这是一个错误!关于如何解决此问题的任何想法?

注意:我可以使用 SingleChildScrollView 和 NeverScrollableScrollPhysics() 并使用控制器来设置位置,但对我来说,这感觉有点矫枉过正。希望有更简单的方法。感谢阅读:)

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    UnconstrainedBox 不是用于消除内部子溢出警告的小部件。它用于放松约束。

    在这种情况下,您可以使用OverflowBox。用法示例:

    SizedBox(
      width: 100,
      height: 100,
      child: OverflowBox(
        minWidth: 150,
        minHeight: 150,
        maxWidth: 150,
        maxHeight: 150,
        child: FlutterLogo(),
      ),
    )
    

    【讨论】:

    • 谢谢!我也尝试过 OverflowBox,但是将其包装在 SizedBox 中似乎是强制溢出框工作(至少在列/行内)或...而不是 SizedBox,LimitedBox() 实际上似乎更好用 Row ()/Column() 父级
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2019-09-23
    • 2021-03-03
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多