dart - Flutter - 堆栈中的定位小部件导致异常

标签 dart flutter flutter-layout flutter-positioned

当我尝试使用 Positioned 小部件封装 PandemicCard 时出现以下异常。如果我渲染卡片单独/没有 Positioned 小部件,它工作得很好。

I/flutter ( 7331): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 7331): The following assertion was thrown during performLayout():
I/flutter ( 7331): RenderStack object was given an infinite size during layout.
I/flutter ( 7331): This probably means that it is a render object that tries to be as big as possible, but it was put
I/flutter ( 7331): inside another render object that allows its children to pick their own size.
I/flutter ( 7331): The nearest ancestor providing an unbounded height constraint is:
I/flutter ( 7331):   RenderFlex#2b18c relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT OVERFLOWING
I/flutter ( 7331):   creator: Column ← Center ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ← CustomMultiChildLayout ←

对于这段代码。谁能帮我弄清楚我做错了什么?

class PandemicCard extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 120.0,
      width: 76.0,
      decoration: BoxDecoration(
          color: Colors.blue,
          boxShadow: [
            BoxShadow(
                blurRadius: 5.0,
                color: Colors.grey)
          ]),
      child: Text('Hi'),
    );
  }
}

class PandemicCardStackState extends State<PandemicCardStack> {
  // final _cards = <PandemicCard>[ PandemicCard(), PandemicCard()];
  final _cards = <PandemicCard>[ PandemicCard()];

  @override
  Widget build( BuildContext context) {
    return Stack(
      // This Bombs!
      children: <Widget>[ Positioned( left: 0.0, top: 0.0, child: _cards[0])]
      // This works!
      // children: <Widget>[ _cards[0]]
    );
  }
}

class PandemicCardStack extends StatefulWidget {
  @override
  PandemicCardStackState createState() => PandemicCardStackState();
}

最佳答案

添加一个空的 Container 作为堆栈的 child :

@override
Widget build( BuildContext context) {
return Stack(
  children: <Widget>[ 
    Container(),
    Positioned( left: 0.0, top: 0.0, child: _cards[0]),
   ]
  );
 }

关于dart - Flutter - 堆栈中的定位小部件导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621743/

相关文章:

Flutter 连接节点/小部件图

flutter - 如何将数据传递到另一个小部件内部的小部件

android - 子元素的阴影在 flutter 中改变了一个 wrap 中的位置

user-interface - AlertDialog 的子容器不覆盖宽度

testing - 对返回流的流进行单元测试

oop - 如何在类构造函数参数中动态传递窗口小部件

Flutter:如何在 ListView 中进行无限循环

class - flutter 类不工作

android - 在 flutter 中发布 apk android 在启动时崩溃

flutter - 如何访问textformfield显示的内容