gpt4 book ai didi

flutter - 在 flutter 中使用 TabBarView 获取 'Horizontal viewport was given unbounded height.'

转载 作者:IT老高 更新时间:2023-10-28 12:34:13 24 4
gpt4 key购买 nike

我正在尝试制作个人资料页面,其中用户信息位于顶部。然后在其下方有一个选项卡 View ,用于不同的 View 。

enter image description here

这是我目前正在使用的代码,当我将 TabBarView 取出时,它不会出现错误,如果我将 TabBarView 包装在Expanded 错误 RenderFlex 子项具有非零 flex 但传入的高度约束是无界的。 出现。

     @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(''),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
CircleAvatar(
minRadius: 45.0,
backgroundImage: NetworkImage(
'https://www.ienglishstatus.com/wp-content/uploads/2018/04/Anonymous-Whatsapp-profile-picture.jpg'),
),
Padding(
padding: EdgeInsets.only(left: 10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Testing Name',
style: TextStyle(
fontSize: 22.0,
color: Colors.grey.shade800,
),
),
Text(
'@testing_username',
style: TextStyle(
fontSize: 13.0,
color: Colors.grey.shade800,
),
),
],
),
),
],
),
),

DefaultTabController(
length: 3,
child: Column(
children: <Widget>[
TabBar(
tabs: <Widget>[
Tab(
icon: Padding(
padding: EdgeInsets.all(6.0),
child: Image.asset(
"assets/images/icons/butterlike.png",
color: Colors.grey.shade800,
),
),
),
Tab(
icon: Padding(
padding: EdgeInsets.all(6.0),
child: Image.asset(
"assets/images/icons/butterlike.png",
color: Colors.grey.shade800,
),
),
),
Tab(
icon: Padding(
padding: EdgeInsets.all(6.0),
child: Image.asset(
"assets/images/icons/butterlike.png",
color: Colors.grey.shade800,
),
),
),
],
),

TabBarView(
children: <Widget>[
Container(
color: Colors.grey,
),
Container(
color: Colors.green,
),
Container(
color: Colors.purple,
),
],
),
],
),
)
],
),
);
}

我确实尝试了 this 的变体但无法让它工作。

最佳答案

错误描述很清楚,TabBarView 没有限制高度。父小部件也没有限制高度。所以,Expanded 小部件并不能解决这个问题。

编辑: 以下解决方案适用于上述问题(带有列)。在一般情况下,使用带有 shr​​inkWrap: true 的 ListView。(或任何其他小部件with shrinkWrap) 正如@Konstantin Kozirev 正确提到的那样,shrinkWrap 会导致一些性能问题。寻找更好的更新解决方案。

有一些选择:

第一种解决方案:

用有限高度的小部件(如 SizedBox 或 AspectRatio)包裹父小部件(列)。然后像这样使用 Expanded 小部件:

Expanded(
child: TabBarView(...),
)

第二个解决方案:

在 TabBarView 本身上使用像 SizedBox 或 AspectRatio 这样的有界小部件:

SizedBox(
height: 300.0,
child: TabBarView(...),
)

注意如果高度不是静态的,您也可以动态计算高度。

关于flutter - 在 flutter 中使用 TabBarView 获取 'Horizontal viewport was given unbounded height.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com