flutter - Flutter:带有其他小部件的 TabBar
问题描述
如何将 TabBar 与其他小部件一起插入?
我有一个带有 NavigationBar 的“菜单页面”和一个带有其他小部件的页面,用于“菜单页面”,我尝试在其中制作一个 TabBar。当我尝试返回 TabBarView 时,我有死代码。
class MyTabbedPage extends StatefulWidget {
const MyTabbedPage({Key key}) : super(key: key);
@override
_MyTabbedPageState createState() => _MyTabbedPageState();
}
class _MyTabbedPageState extends State<MyTabbedPage>
with SingleTickerProviderStateMixin {
final List<Tab> myTabs = <Tab>[
Tab(text: 'Наборы'),
Tab(text: 'Роллы'),
Tab(text: 'Суши'),
Tab(text: 'Сашими'),
Tab(text: 'Онигири'),
Tab(text: 'Ланчи'),
Tab(text: 'WOK'),
Tab(text: 'Напитки'),
Tab(text: 'Другое'),
];
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
TabBar(
isScrollable: true,
unselectedLabelColor: Colors.grey,
labelColor: Colors.black,
indicatorColor: Colors.black,
controller: _tabController,
tabs: myTabs,
);
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(),
);
}
}
我看到 TabBar 但我没有看到 TabBarView。请告诉我如何正确地做。
解决方案
问题是 build 方法中返回的小部件没有排列到布局中。你可以只返回TabBar
和TabBarView
。它们应该排列在布局内,如Column
or Row
。或者干脆你可以使用脚手架。您可以TabBar
作为脚手架的Bottom
小部件Appbar
和主体提供。TabBarView
看看这个完整的例子以及它们是如何排列的。
import 'package:flutter/material.dart';
void main() {
runApp(TabBarDemo());
}
class TabBarDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
title: Text('Tabs Demo'),
),
body: TabBarView(
children: [
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
Icon(Icons.directions_bike),
],
),
),
),
);
}
}
推荐阅读
- react-native - 反应原生转弯导航
- c# - 使用线程 asp.net web 表单按钮单击会话到期后
- php - 如何遍历两个xml文件?
- django - 如何在模型的保存方法中使用 select_related?
- css - 更改默认颜色选择器框
- html - 如何水平排列 4 个 div,第一个 2div 的长度固定,第 4 个也固定长度,第 3 个是流动的
- javascript - 为什么我的 routeValues 变量在我的视图加载和我单击 ASP.NET MVC 中的 Html.ActionLink 之间发生变化?
- python - python-pptx 如何使图例显示系列名称而不是类别名称
- javascript - 单击时展开表格行
- c# - 在 WPF 中显示一系列图像,然后关闭表单