我目前陷入困境,需要从地图检索索引到Scaffold的其他部分。是否可以从下面的地图中检索索引值到Scaffold的其他部分(浮动操作按钮)?
Iterable<int> get positiveIntegers sync* {
int i = articleList.length - 1;
while (true) yield i--;
}
@override
Widget build(BuildContext context) {
int getLength = articleList.length;
var list = positiveIntegers.take(getLength).toList();
return Scaffold(
appBar: AppBar(
title: new Text(
'Popular',
textAlign: TextAlign.center,
),
textTheme: TextTheme(
title: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w700,
color: Colors.black)),
backgroundColor: Colors.white,
centerTitle: true,
elevation: 0.0,
),
body: SwipeStack(
children: list.map((index) {
...
}
),
floatingActionButton: Container(
margin: EdgeInsets.only(top: 25, bottom: 25, left: 20),
alignment: Alignment(0, 1),
child: new Row(
children: <Widget>[
RawMaterialButton(
onPressed: () {
if (isOutOfCards == true) {
setState(() {
isOutOfCards = false;
});
}
},
child: iconBuild(context),
shape: new CircleBorder(),
fillColor: Colors.red[700],
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
padding: const EdgeInsets.all(11),
),
buttonTextBuild(context),
],
),
),
);
}
Widget buttonTextBuild(BuildContext context) {
if (isOutOfCards == false) {
return Container(
child: Text('$cardIndex/${articleList.length}',
textAlign: TextAlign.left,
style: TextStyle(
fontSize: 12.75,
fontWeight: FontWeight.w500,
letterSpacing: 1)));
} else {
return Container(
child: Text('Start Again',
textAlign: TextAlign.left,
style: TextStyle(
fontSize: 12.75,
fontWeight: FontWeight.w500,
letterSpacing: 1)));
}
}
就像上面的代码一样,我想从list.map中检索“索引”,并将其传递到buttonTextBuild内的cardIndex。
答案 0 :(得分:1)
您可以这样做:
children: [
for(int index = 0; index < list.length; index++)
Text(list[index])
]
文本小部件只是示例,您可以使用所需的任何小部件或调用传递 list [index] 的函数来获取项目
答案 1 :(得分:0)
您可以使用enumerate
function from the quiver
package:
children: enumerate(list).map((indexedValue) {
var index = indexedValue.index;
var value = indexedValue.value;
...
}),