![](/img/trans.png)
[英]Incorrect use of ParentWidget. Expanded widgets must be placed inside flex widget
[英]Incorrect use of parent data widget. expanded widgets must be placed inside flex widgets
我收到以下錯誤:
即,拋出了另一個異常: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),
],
)*/
],
)
),
),
),
);
}
這是我的代碼,請檢查並讓我知道問題。
您應該只在column
、 row
或flex
使用Expanded
。
在這種情況下,只需刪除Expanded
或將其包裝在Column
解決問題。
Expanded
小部件必須是Row
、 Column
或Flex
的后代
解決上述問題的方法是將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)
],
),
);
飄飄快樂!
第一條規則:僅在column
、 row
或flex
使用Expanded
。
第二條規則:具有擴展子列的父column
也必須用擴展包裹
我的問題是因為 Expand
child: Expanded(
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: getChildren(cubit.listPerformer, state),
),
刪除展開后,它工作正常。
我的代碼中沒有展開,所以我發現如果它在listview
,使用Spacer()
也會導致這個錯誤
當我跳過視頻時,chewie 控制器顯示這些錯誤,當我修復了 chewie 包錯誤消失。
請在此處修復 material_controls.dart
[刪除堆棧小部件中的擴展小部件]
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),
],
),
],
),
),
),
);
}
就我而言,我在列內使用Positioned
。 刪除它解決了問題!
可能有一些事情可以解決這個問題
ListView
不要使用Spacer
WidgetColumn
下使用Positiond
Expanded
只能與column
row
Flex
此解決方案僅在您使用 Position 作為行或列的父級時才有效
就我而言,我在列內使用定位。 刪除它解決了問題!
別的
永遠記住在行、列或 Flex 中使用 Expanded
就我而言,我在 Padding 小部件中使用 Expanded。 Padding 在列內,但由於 Expanded 被 Padding 包裹,它給了我錯誤。 只需刪除 Expanded 即可解決我的問題。
"就我而言,這是因為我將 Expanded 封裝在 SizedBox 中,我只是將 Expanded 封裝在 Row 中,僅此而已。
"您可以像這樣使用Expanded
作為滾動父級的子級:
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,),
),
],
),
)
],
),
)
我刪除了一個位於Stack
內Container
內的Positioned
小部件,“不正確使用 ParentDataWidget”的問題就消失了。
這個問題來自舊屏幕。 因為這個屏幕在舊屏幕上,所以控制台可能會顯示舊屏幕錯誤。 為了解決這個問題,我修復了舊屏幕的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.