子页面显示在tabbar中?是怎么实现的?
时间: 2023-10-07 10:09:08 浏览: 160
在一个移动端的应用程序中,我们通常会用底部的TabBar来展示应用程序的不同模块。而对于每一个模块,我们通常会使用一个页面来展示相应的内容。在Flutter中,我们可以通过使用一个TabBar和TabBarView来实现这样的效果。
具体实现方法如下:
1. 创建一个Scaffold Widget,将底部的TabBar放置在底部的bottomNavigationBar属性中,并将TabBarView放置在body属性中。
```dart
Scaffold(
bottomNavigationBar: TabBar(
tabs: [
Tab(icon: Icon(Icons.home)),
Tab(icon: Icon(Icons.search)),
Tab(icon: Icon(Icons.person)),
],
),
body: TabBarView(
children: [
HomePage(),
SearchPage(),
ProfilePage(),
],
),
);
```
2. 在TabBarView中的子页面中,我们可以使用DefaultTabController.of(context)来获取到当前的TabController,并使用TabBarView的index属性来控制当前展示的页面。
```dart
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final TabController tabController = DefaultTabController.of(context);
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Text('Home Page'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
tabController.animateTo(1);
},
child: Icon(Icons.search),
),
);
}
}
```
在这个例子中,我们在HomePage的build方法中获取了当前的TabController,并在FloatingActionButton的onPressed方法中,使用TabController的animateTo方法来切换到第二个页面。
这样就实现了将子页面显示在TabBar中的效果。
阅读全文