Flutter报错Incorrect use of ParentDataWidget,请求排查代码问题
解决 "Incorrect use of ParentDataWidget" 错误
这个错误我太熟了,通常都是组件的布局约束没处理好导致的。看你的代码,问题出在Chewie组件直接放在Column的子列表里——Chewie作为视频播放器组件,需要父组件给它一个明确的尺寸约束,但Column默认不会给子组件自动分配高度,这就导致Flutter不知道该怎么渲染它,从而抛出ParentDataWidget错误。
修复方案
给Chewie组件外面套一层Expanded(让它占满Column剩余的可用空间),或者用SizedBox指定一个固定高度,这样就能让Column正确识别它的布局约束了。这里推荐用Expanded,适配性更好。
修改后的代码
@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套上Expanded,解决布局约束问题 Expanded( child: Chewie( controller: _chewieController, ), ), TabBar( labelColor: Colors.black, tabs: categoryNames, ), Expanded( child: TabBarView( children: [ImageList()], ), ) ], ), ), ), ), ); }
另外要注意,DefaultTabController的length要和TabBar的tabs数量、TabBarView的children数量保持一致,不然也会出现布局问题,你代码里categoryNames.length要确保和TabBarView里的子组件数量匹配哦。
内容的提问来源于stack exchange,提问作者Mounika




