使用flutter的tab和pageview
时间: 2024-05-04 20:21:32 浏览: 129
使用 Flutter 的 TabBar 和 PageView 可以轻松实现多个页面切换的效果,以下是一个简单的示例:
```dart
class MyTabbedPage extends StatefulWidget {
@override
_MyTabbedPageState createState() => _MyTabbedPageState();
}
class _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {
final List<Tab> myTabs = <Tab>[
Tab(text: 'Tab 1'),
Tab(text: 'Tab 2'),
Tab(text: 'Tab 3'),
];
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: myTabs.length);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Tabbed Page'),
bottom: TabBar(
controller: _tabController,
tabs: myTabs,
),
),
body: TabBarView(
controller: _tabController,
children: myTabs.map((Tab tab) {
final String label = tab.text.toLowerCase();
return Center(
child: Text(
'This is the $label tab',
style: const TextStyle(fontSize: 36),
),
);
}).toList(),
),
);
}
}
```
在这个示例中,我们创建了一个 `_MyTabbedPageState` 类来管理 TabBar 和 PageView 的状态。在 `initState` 中,我们创建了一个 `TabController` 对象,将其与 `TabBar` 和 `TabBarView` 绑定。在 `dispose` 中,我们释放了 `TabController` 对象。在 `build` 方法中,我们创建了一个 `Scaffold`,其中包含一个 `AppBar` 和一个 `TabBarView`。`TabBarView` 包含了一个 `children` 列表,其中每个元素都是一个 `Center` widget,包含一个 `Text` widget,用于显示当前选中的标签。
阅读全文