不正确使用父数据小部件。扩展小部件必须放置在 flex 小部件内

Mou*_*ka 116 widget dart flutter flutter-layout flutter-widget

我收到以下错误:

即,抛出了另一个异常:ParentDataWidget 的错误使用。在手机屏幕上显示错误。

 @override
  Widget build(BuildContext context) {

    return MaterialApp(
      title: widget.title,
      theme: ThemeData.light().copyWith(
        platform: _platform ?? Theme.of(context).platform,
      ),
      home: DefaultTabController(
        length: categoryNames.length,
        child: Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
                 ),
        body: SafeArea(
            child: Column(
              children: <Widget>[
                Chewie(
                  controller: _chewieController,
                ),
                TabBar(
                  labelColor:Colors.black,
                  tabs: categoryNames,
                ),
                Expanded(
                  child: TabBarView(
                    children: [
                      ImageList()
                    ],
                  ),
                )
                /*TabBarView(
                  children: [
                    Icon(Icons.directions_car),
                    Icon(Icons.directions_transit),
                    Icon(Icons.directions_bike),
                  ],
                )*/
              ],
            )
        ),
      ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

这是我的代码,请检查并让我知道问题。

Mar*_*ell 214

您应该Expanded只在column,row或 中使用flex

  • 为什么 flutter 开发人员不将其写入错误消息中?=) “在 Flex 小部件内部,如 Flex、列、行” (18认同)

Akb*_*adi 76

有很多事情可以解决这个问题。

例如:

  1. ListView在不使用SpacerWidget下
  2. 不要Positioned在以下Row或以下使用Column
  3. Expanded只能使用它必须是的后代Column Row Flex


Par*_*iya 66

在这种情况下,只需将Expanded其移除或包裹在 a 中即可Column解决问题。

一个Expanded小部件必须的后代RowColumnFlex

解决上述问题的方法是将expanded小部件移动到小部件内flex。下面举例。

Row(
    children: [
      Expanded(
        child: Column(
          children: [
            Container(
              padding: EdgeInsets.only(bottom: 8.0),
              child: Text(
                "Some Lage Somthing",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
            ),
            Text("Someplace, Country")
          ],
        ),
      ),
      Icon(Icons.star)
    ],
  ),
);
Run Code Online (Sandbox Code Playgroud)

飘飘快乐!


小智 53

第一条规则:Expanded仅在column,row或内使用flex

第二条规则:column具有扩展子列的父项也必须用扩展项包裹

  • 还没有听到更大的废话。如果扩展只能是列、行或灵活的后代,您建议我们如何将列包装在扩展中? (31认同)

Sam*_*RAK 10

我的问题是因为 Expand

          child: Expanded(
            child: SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Column(
                children: getChildren(cubit.listPerformer, state),
              ),
Run Code Online (Sandbox Code Playgroud)

删除扩展后,它工作正常。


小智 7

我的代码中没有扩展,所以我发现Spacer()如果它在一个内部,使用太也会导致这个错误listview


小智 6

Positioned就我而言,我在柱内使用。删除它就解决了问题!


小智 6

我删除了a 内的一个Positioned小部件,“ParentDataWidget 的错误使用”问题消失了。ContainerStack

  • 尝试提供帮助是件好事,但在这种情况下,这个问题已经有很多非常详细的答案,而您的答案实际上并没有添加任何内容。在回答之前,先看看其他人说过的话,并考虑一下您是否添加了与问题明显相关的任何新内容。 (2认同)