【问题标题】:incorrect use of parent data widget. expanded widgets must be placed inside flex widgets不正确地使用父数据小部件。扩展的小部件必须放在 flex 小部件内
【发布时间】:2019-07-21 04:04:47
【问题描述】:

我收到以下错误:

即,引发了另一个异常: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),
                  ],
                )*/
              ],
            )
        ),
      ),
      ),
    );
  }

这是我的代码,请检查并告诉我问题。

【问题讨论】:

  • 我刚刚运行了您发布的代码,但没有出现同样的错误,您能否发布categoryNames 的内容或ImageList() 的输出?问题很可能是Expanded,它不是ColumnRow 的直接子代,但如果没有更多信息,很难说它到底来自哪里
  • categorynames 只是一个名称列表,而 Imagelist 是一个类,问题在于扩展本身正在显示,但除此之外,还有任何替代方法可以使用标签实现 tabbarview

标签: flutter dart widget flutter-layout flutter-widget


【解决方案1】:

您应该只在columnrowflex 中使用Expanded

【讨论】:

    【解决方案2】:

    错误是什么意思

    此错误与缺少预期的父小部件有关。

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

    虽然 Flutter 的小部件在如何在 UI 中组合在一起方面通常很灵活,但这些小部件中的一小部分需要特定的父小部件。当您的小部件树无法满足此期望时,您可能会看到此错误。

    这是一个不完整的小部件列表,这些小部件需要在 Flutter 框架中使用特定的父小部件。随时提交 PR(使用页面右上角的 doc 图标)以扩展此列表。

    |              Widget                       |    Expected parent widget(s)    |
    | ---------------------------------------   | ------------------------------- |
    |         Flexible                          |         Row, Column, or Flex    |
    |         Expanded (a specialized Flexible) |         Row, Column, or Flex    |
    |         Positioned                        |         Stack                   |
    |         TableCell                         |         Table                   |
    

    修复它

    一旦您知道缺少哪个父小部件,修复应该是显而易见的。

    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)
        ],
      ),
    );
    

    快乐飘飘!

    【讨论】:

    • 正如我现在从他的帖子中看到的那样已在列中展开
    • 这个答案说要在flex小部件内部移动,但不这样做
    【解决方案3】:

    第一条规则:仅在columnrowflex 中使用Expanded

    第二条规则:扩展子列的父column也必须用扩展包装

    【讨论】:

    • 就我而言,问题是因为 Expanded/Flexible 不是 Column 子项中的直接子项,而是位于 Column 的直接子项中的 GestureRecognizer。
    • 还没有听到更大的废话。如果expanded 只能是column、row 或flexible 的后代,你建议我们应该如何在expanded 中包装一列?
    【解决方案4】:

    有可能会出现这个问题

    1. ListView 下不要使用Spacer 小部件
    2. 不要在RowColumn下使用Positioned
    3. Expanded 只能使用它必须是Column Row Flex 的后代

    【讨论】:

      【解决方案5】:

      我的代码中没有展开,所以我发现使用 Spacer() 如果它在 listview 内也会导致此错误

      【讨论】:

      • 您是否找到了在 Scrollable 项目中使用 Spacer() 的替代方法?我想在最后一个子列之前保留最大空间,并且我想消除键盘弹出窗口上的溢出。
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        我删除了 ContainerStack 内的 Positioned 小部件,并且“不正确使用 ParentDataWidget”的问题消失了。

        【讨论】:

        • 尝试和帮助很好,但在这种情况下,这个问题已经有很多非常详细的答案,而你的答案实际上并没有添加任何东西。在回答之前,先看看其他人怎么说,想想你是否添加了任何与问题明显相关的新内容。
        【解决方案8】:

        当我跳过视频时,当我修复 Chewie 包错误消失时,chewie 控制器会显示这些错误。

        请修复 material_controls.dart here

        [删除堆栈小部件中的扩展小部件]

        return MouseRegion(
          onHover: (_) {
            _cancelAndRestartTimer();
          },
          child: GestureDetector(
            onTap: () => _cancelAndRestartTimer(),
            child: AbsorbPointer(
              absorbing: notifier.hideStuff,
              child: Stack(
                children: [
                  if (_latestValue.isBuffering)
                    const Expanded(
                      child: Center(
                        child: CircularProgressIndicator(),
                      )
                    )
                  else
                    _buildHitArea(),
                  _buildActionBar(),
                  Column(
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: <Widget>[
                      if (_subtitleOn)
                        Transform.translate(
                          offset: Offset(
                              0.0, notifier.hideStuff ? barHeight * 0.8 : 0.0),
                          child:
                              _buildSubtitles(context, chewieController.subtitle!),
                        ),
                      _buildBottomBar(context),
                    ],
                  ),
                ],
              ),
            ),
          ),
        );
        

        }

        【讨论】:

          【解决方案9】:

          仅当您使用 Position 作为行或列的父级时,此解决方案才有效

          就我而言,我在列内使用定位。删除它解决了问题!

          否则

          始终记得在行、列或 Flex 中使用 Expanded

          【讨论】:

            【解决方案10】:

            这个问题来自旧屏幕。因为这个屏幕在旧屏幕上,所以控制台可能会显示旧屏幕错误。为了解决这个问题,我修复了旧屏幕的问题

            【讨论】:

              猜你喜欢
              • 2020-08-29
              • 2018-10-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-06-04
              • 2021-10-03
              • 1970-01-01
              相关资源
              最近更新 更多