Flutter:如何从地图(列表)中检索索引

问题描述 投票:0回答:2

目前,我陷入困境,需要从map检索索引到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中检索'index'并将其传递给buttonTextBuild中的cardIndex。

flutter dart flutter-layout
2个回答
0
投票

您可以这样做:

            children: [
              for(int index = 0; index < list.length; index++)
                Text(list[index])
            ]

文本小部件仅是示例,您可以使用所需的任何小部件或调用传递[[list [index]的函数以获取项目


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.