让我说:
child: new Column(
children: <Widget>[
Center(child: Text("This is my title"),),
]
有没有办法在静态居中文本之后将List添加到此列?或者我必须添加使用此方法:
List<Widget> widgets();
widgets.add(Center(child: Text("This is my title"),));
for (var a=0;a<5;a++) {
widgets.add(Text("$a"));
}
,然后像这样添加所有列表:
child: new Column(
children: widgets
答案 0 :(得分:2)
这是一个小示例,您可以在其中找到一个居中的标题和一个数字列表。您可以通过点击按钮来修改列表:
List<int> numbers = [1, 2, 3];
如果您希望标题随列表一起滚动:
ListView(
children: <Widget>[
RaisedButton(
child: Text("Add number"),
onPressed: () {
setState(() {
numbers.add(numbers.length + 1);
});
},
),
Center(
child: Text("This is my title"),
),
ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: numbers.length,
itemBuilder: (context, count) {
return Text('Number: ${numbers[count]}');
},
),
],
)
如果要固定标题并仅滚动列表:
Column(
children: <Widget>[
RaisedButton(
child: Text("Add number"),
onPressed: () {
setState(() {
numbers.add(numbers.length + 1);
});
},
),
Center(
child: Text("This is my title"),
),
Expanded(
child: ListView.builder(
shrinkWrap: true,
itemCount: numbers.length,
itemBuilder: (context, count) {
return Text('Number: ${numbers[count]}');
},
),
),
],
)
这是不使用ListView.builder的另一个简单选择:
ListView(
children: <Widget>[
RaisedButton(
child: Text("Add number"),
onPressed: () {
setState(() {
numbers.add(numbers.length + 1);
});
},
),
Center(
child: Text("This is my title"),
),
Column(
children: getWidgets(),
),
],
)
List<Widget> getWidgets() {
return numbers.map((number) => Text('Number: $number')).toList();
}
答案 1 :(得分:1)
如果我了解您的需求,我认为这会为您提供帮助
child: new Column(
children: <Widget>[
Center(child: Text("This is my title"),),
new Column(
children: ListMyWidgets(),
),
]
));
然后添加新的函数以返回动态内容
List<Widget> ListMyWidgets() {
List<Widget> list = new List();
list.add(Text("text1"))
list.add(Text("text2"))
list.add(Text("text..."))
return list;
}
按下按钮后添加setState
以查看效果
setState(() { });
答案 2 :(得分:-2)
这就是我想要的:
child: new Column(
children: <Widget>[
Center(child: Text("This is my title"),),
widgets()
]
...
...
Widget widgets() {
List<Widget> list = new List<Widget>();
for (var a=0;a<5;a++) {
list.add(Text("$a"));
}
return list;
}