错误地使用父数据小部件。扩展小部件必须放置在flex小部件中

我得到以下错误:

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

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

268184 次浏览

Expanded不能在Stack中使用。

你只能在ColumnRowFlex中使用Expanded

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

第二条规则:父类column如果有展开子列,也必须用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

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

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

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

我删除了一个Positioned小部件,它位于Stack中的Container中,问题“parentdatawidget的错误使用”;走了。

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

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

其他的

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

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

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

我的问题在于Expand

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

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