用flutter写一个多选项卡列表
时间: 2023-09-27 21:05:34 浏览: 201
多个选项卡
3星 · 编辑精心推荐
好的,下面是一个简单的 Flutter 多选项卡列表的示例代码:
```dart
import 'package:flutter/material.dart';
class MultiTabList extends StatefulWidget {
@override
_MultiTabListState createState() => _MultiTabListState();
}
class _MultiTabListState extends State<MultiTabList> {
// 选项卡列表
List<Tab> _tabs = [
Tab(text: '选项卡1'),
Tab(text: '选项卡2'),
Tab(text: '选项卡3'),
Tab(text: '选项卡4'),
];
// 选项卡对应的页面列表
List<Widget> _pages = [
Container(
child: Center(
child: Text('页面1'),
),
),
Container(
child: Center(
child: Text('页面2'),
),
),
Container(
child: Center(
child: Text('页面3'),
),
),
Container(
child: Center(
child: Text('页面4'),
),
),
];
// 记录选中的选项卡索引和已选的页面
int _currentIndex = 0;
List<int> _selectedPages = [];
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: _tabs.length,
child: Scaffold(
appBar: AppBar(
title: Text('多选项卡列表'),
bottom: TabBar(
tabs: _tabs,
isScrollable: true,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
),
),
body: TabBarView(
children: _pages
.asMap()
.map(
(index, page) => MapEntry(
index,
CheckboxListTile(
title: Text('页面${index + 1}'),
value: _selectedPages.contains(index),
onChanged: (isSelected) {
setState(() {
if (isSelected) {
_selectedPages.add(index);
} else {
_selectedPages.remove(index);
}
});
},
),
),
)
.values
.toList(),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.done),
onPressed: () {
// 处理选中的页面
print('已选页面:$_selectedPages');
},
),
),
);
}
}
```
这个示例代码中,我们使用了 `DefaultTabController` 和 `TabBar` 来创建多个选项卡,使用 `TabBarView` 来显示对应的页面。在每个页面的内容中,我们使用 `CheckboxListTile` 来显示一个复选框和文字,并且在用户选择其中一个复选框时,将当前页面的索引添加到 `_selectedPages` 数组中,表示该页面已被选中。最后,我们在 `FloatingActionButton` 的 `onPressed` 回调中处理用户选择的页面。
阅读全文