You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

另外要注意,DefaultTabControllerlength要和TabBartabs数量、TabBarViewchildren数量保持一致,不然也会出现布局问题,你代码里categoryNames.length要确保和TabBarView里的子组件数量匹配哦。

内容的提问来源于stack exchange,提问作者Mounika

火山引擎 最新活动