gpt4 book ai didi

flutter - 如何从默认标签栏删除底部

转载 作者:行者123 更新时间:2023-12-03 08:50:08 25 4
gpt4 key购买 nike

我需要添加一个没有应用栏的选项卡栏,我从 StackOverflow 获得了一个使用灵活空间的解决方案,它正在工作,但它在选项卡栏底部产生了额外的不需要的空间
如何删除它或隐藏它?


我的完整代码

import 'package:flutter/material.dart';

class TemplesListingWithTabMode extends StatefulWidget {
TemplesListingWithTabMode({Key key}) : super(key: key);

@override
_TemplesListingWithTabModeState createState() =>
_TemplesListingWithTabModeState();
}

class _TemplesListingWithTabModeState extends State<TemplesListingWithTabMode> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[

Container(
height: MediaQuery.of(context).size.height-kToolbarHeight-kMaterialListPadding.top-kTabLabelPadding.top,
child: DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
flexibleSpace: TabBar(
indicatorColor: Colors.pink,
tabs: [
Tab(
child: Text("ALL",style: TextStyle(color: Colors.pink),),
),Tab(
child: Text("Favorites",style: TextStyle(color: Colors.pink),),
)
]),
),
body : Container(
color: Colors.grey,
child: TabBarView(

children: [
ListView.builder(
itemCount: 100,
itemBuilder: (context,index){
return Container(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("i am $index"),
),
),
);
}),
ListView.builder(
itemCount: 5,
itemBuilder: (context,index){
return Container(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("i am $index"),
),
),
);
})
]),
),
),
),
)
],
);
}
}


Flutter flexibleSpace issue

@Darshan提供的解决方案没有解决我的问题,解决方案是
将 TabBar 包裹在 SafeArea 小部件中。结果是
enter image description here
如何从应用栏中删除这个小底部?

最佳答案

原因是AppBar有它的大小+状态栏大小。有多种方法可以解决这个问题。正如其他答案提到的,简单的方法是添加 SafeArea

请注意,即使在两个选项卡下也会出现难看的小空间。

enter image description here

要解决这个问题,您可以使用 PreferredSize (还有其他方法)。

enter image description here

上述屏幕截图的代码:

class _TemplesListingWithTabModeState extends State<TemplesListingWithTabMode> {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: SafeArea(
child: Scaffold(
appBar: PreferredSize(
preferredSize: Size(double.infinity, 60),
child: TabBar(
indicatorColor: Colors.pink,
tabs: [
Tab(
child: Text("ALL",style: TextStyle(color: Colors.pink),),
),Tab(
child: Text("Favorites",style: TextStyle(color: Colors.pink),),
)
]),
),
body : Container(
color: Colors.grey,
child: TabBarView(

children: [
ListView.builder(
itemCount: 100,
itemBuilder: (context,index){
return Container(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("i am $index"),
),
),
);
}),
ListView.builder(
itemCount: 5,
itemBuilder: (context,index){
return Container(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("i am $index"),
),
),
);
})
]),
),
),
),
);
}
}

关于flutter - 如何从默认标签栏删除底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525806/

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