我得到以下错误:

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

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


Expanded不能在Stack中使用。

您应该只在列、行或Flex中使用Expanded


第一条规则:只在列、行或flex中使用Expanded。

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


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

请修复material_controls。这里的飞镖

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

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

}


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


在我的例子中,我在列中使用了定位。移除它就解决了问题!


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

在ListView下不使用Spacer Widget 不要在行或列下使用定位 只能使用扩展,必须是列行伸缩的后代


我删除了一个定位小部件,是在一个堆栈内的容器和问题“不正确使用ParentDataWidget”消失了。


此解决方案仅在使用Position作为行或列的父元素时有效

在我的例子中,我在列中使用了定位。移除它就解决了问题!

Else

始终记住使用“行、列或Flex扩展”


在我的例子中,我在Padding小部件中使用Expanded。填充是在一个列内,但由于扩展是由填充包装它给我的错误。简单地删除扩展解决了我的问题。


在我的例子中,这是因为我在一个sizebox中封闭了一个Expanded,我只是在一行中封闭了Expanded,就是这样。


我的问题在于Expand

          child: Expanded(
            child: SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Column(
                children: getChildren(cubit.listPerformer, state),
              ),

删除Expand后,它可以正常工作。


你可以像这样使用Expanded作为scrolling parent的子元素:

Scaffold(
  body: CustomScrollView(
    physics: const AlwaysScrollableScrollPhysics(),
    slivers: [
      SliverFillRemaining(
        fillOverscroll: true,
        child: Column(
          children: <Widget>[
            Container(color: Colors.red,height: 100),
            Expanded(
              child: Container(color: Colors.purple,),
            ),
          ],
        ),
      )
    ],
  ),
)