Flutter:移除Container内部不必要的顶部间距问题
移除Container内部顶部间距的解决方案
问题原因分析
你的代码里有两个导致顶部间距的核心因素:
- 包裹ListView的
Padding组件主动设置了顶部内边距(xLargePadding参数) ListView.separated默认会继承Material Design规范的系统级顶部内边距
具体解决步骤
调整Padding的顶部内边距
将Padding的EdgeInsets.fromLTRB第二个参数(顶部padding值)改为0,保留其他方向的内边距:padding: const EdgeInsets.fromLTRB( xxLargePadding, 0, xxLargePadding, largePadding),清除ListView的默认内边距
给ListView.separated添加padding: EdgeInsets.zero属性,消除系统自带的顶部间距:ListView.separated( padding: EdgeInsets.zero, // 添加该行清除默认内边距 shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), // 其余原有代码... )
修改后的完整代码
Widget build(BuildContext context) => SizedBox( height: 440, child: Container( //grey color color: CustomTheme().neutral100, child: Padding( padding: const EdgeInsets.fromLTRB( xxLargePadding, 0, xxLargePadding, largePadding), // 顶部padding设为0 child: ListView.separated( padding: EdgeInsets.zero, // 清除ListView默认padding shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (_, index) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( officials[index].fullName, style: TextStyle( fontSize: 12, color: CustomTheme().neutral500),//white color ), Text( officials[index].type, style: TextStyle( fontSize: 12, color: CustomTheme().neutral400), ), ], ), separatorBuilder: (_, index) => const Padding( padding: EdgeInsets.symmetric(vertical: largePadding), child: Divider(), ), itemCount: officials.length), ), ), );
内容的提问来源于stack exchange,提问作者SaDev
相关产品推荐
相关产品推荐

