flutter - Flutter - 将选项卡添加到页面时发生错误
问题描述
所以我有以下代码应该显示带有按钮的页面以在页面中添加选项卡:
List<String> tabTitles = [];
List<Widget> tabContents = [];
TabController _tabController;
Scaffold(
appBar: AppBar(
title: Text('DataTable of Gene Lists'),
centerTitle: true,
backgroundColor: Colors.greenAccent,
actions: [
IconButton(
icon: Icon(Icons.add),
onPressed: () => _onTabAdd(_tabController.index),
),
IconButton(
icon: Icon(Icons.delete),
onPressed: () => _onTabRemoved(_tabController.index),
),
IconButton(
icon: Icon(Icons.edit),
onPressed: () => _onTabEdit(context),
),
],
bottom: PreferredSize(
preferredSize: Size.fromHeight(40.0),
child: Expanded(
child: Container(
color: Colors.blue,
child: TabBar(
controller: _tabController,
tabs: tabTitles
.map(
(title) => Tab(text: title),
)
.toList(),
labelColor: Colors.yellow,
unselectedLabelColor: Colors.white,
indicatorSize: TabBarIndicatorSize.label,
indicatorPadding: EdgeInsets.all(5.0),
indicatorColor: Colors.red,
),
),
),
),
),
以及处理选项卡添加的功能:
void _onTabAdd(int index) {
setState(() {
tabTitles.add("Tab ${tabTitles.length}");
tabContents.add(GenesTable(this));
_tabController = TabController(length: tabTitles.length, vsync: this);
});
}
当我单击此按钮时,内容似乎加载成功,但问题是没有显示标题,并且显示以下错误,如图所示:
任何帮助将不胜感激!
编辑:
我在 Flutter 的 repo 上提交了一个 issue,你可以在这里关注它
解决方案
我无法解决您的问题,但我找到了解决方法。
也许这对您有用,或者这可能会帮助您真正找到问题。
这里是:
void _onTabAdd(int index) {
tabTitles.add("Tab ${tabTitles.length}");
tabContents.add(Container(
color: Colors.red,
height: 200,
width: 200,
));
_tabController = TabController(length: tabTitles.length, vsync: this);
setState(() {});
Future.delayed(Duration(milliseconds: 1), () {
setState(() {});
});
}
注意:红色警告不会出现在生产中,因此它实际上可能是一个可行的解决方案。
推荐阅读
- virtual-machine - 有没有办法使用 virt-manager 从内核和 initrd 创建 VM?
- php - PHP 无法完成正则表达式
- java - 如何通过 php 从数据库中获取 JSONarray 值并将 JSONarray 传送到列表视图?
- azure - Azure function app powershell 触发两次/三次
- c# - Addforce 不会击退我的玩家角色
- javascript - 打印后的 Javascript 事件
- hyperlink - 如何使用 RestructuredText 插入无标题的超链接?
- function - React Native ArrowFunction 针对正常功能(Appstate)
- r - 如何找到对应于 R 中 y 最大值一半的 x 值?
- android - Android房间没有正确删除缓存