【发布时间】:2020-12-03 02:34:39
【问题描述】:
情况:
我有一个名为tabsText 的列表,我想为TabBar 中的列表中的每个项目制作标签。
名单如下:
List<String> tabsText = ["Top","Outdoor","Indoor", "Seeds", "Flowers"];
试过了:
我像这样创建了一个名为 tabsMaker 的函数。
tabMaker(){
for (var i = 0; i < tabsText.length; i++) {
return Tab(text: tabsText[i],);
};
}
并像这样在TabBar 中使用它,
child: DefaultTabController(
length: 5,
child: ListView(
children: [
TabBar(
isScrollable: true,
tabs:
[
tabMaker()
]
)
],
),
),
但会出现这样的错误
控制器的长度属性 (5) 与 TabBar 选项卡中的选项卡数量 (1) 不匹配
财产。
问题:
完整代码:
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class PlantFeatureScreen1 extends StatefulWidget {
@override
_PlantFeatureScreen1State createState() => _PlantFeatureScreen1State();
}
class _PlantFeatureScreen1State extends State<PlantFeatureScreen1> {
List<String> tabsText = ["Top","Outdoor","Indoor", "Seeds", "Flowers"];
tabMaker(){
for (var i = 0; i < tabsText.length; i++) {
return Tab(text: tabsText[i],);
};
}
@override
Widget build(BuildContext context) {
return Column(
children:<Widget> [
Expanded(
flex:1,
child: Container(
decoration: BoxDecoration(
color:Colors.grey,
),
child: ListTile(leading: Icon(Icons.donut_small,size: 35,color: Color(0xFFC1C2C4), ),
trailing: Icon(Icons.search,size: 35,color: Color(0xFFC1C2C4),),
),
),),
Expanded(
flex:1,
child: Align(
alignment: Alignment(-1, 0),
child: Container(
decoration: BoxDecoration(
color:Colors.white,
),
child: Text(
"Plants", style: TextStyle(
fontSize: 30,fontWeight: FontWeight.w700
),
),
),
),),
Expanded(
flex:1,
child: Container(
decoration: BoxDecoration(
color:Colors.blue,
),
child: DefaultTabController(
length: 5,
child: ListView(
children: [
TabBar(
isScrollable: true,
tabs:
[
tabMaker()
// Tab(text: tabsText[0],),
// Tab(text: tabsText[1],),
// Tab(text: tabsText[2],),
// Tab(text: tabsText[3],),
// Tab(text: tabsText[4],)
]
)
],
),
),
),),
],
);
}
}
【问题讨论】: