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

时间:2019-02-27 12:21:09

标签: android ios flutter

我遇到以下错误:

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

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

7 个答案:

答案 0 :(得分:43)

在这种情况下,只需删除Expanded或将其包装在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)
    ],
  ),
);

快乐飘飘!

答案 1 :(得分:24)

第一条规则:仅在Expandedcolumnrow中使用flex

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

答案 2 :(得分:1)

您应仅在列,行或伸缩内使用扩展。

答案 3 :(得分:0)

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

请修复 material_controls.dart here

[移除 Stack 小部件中的扩展小部件]

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

}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

可能有一些事情可以解决这个问题

  1. ListView 下不要使用 Spacer Widget
  2. 不要在 Row 或 Positiond 下使用 Column
  3. Expanded 只能在 column row Flex
  4. 中使用