【问题标题】:Incrementing count inside List.map()List.map() 中的递增计数
【发布时间】:2019-11-26 21:56:01
【问题描述】:

我有一个工作日列表var _weekdays = ['Monday', 'Tuesday','Wednesday', 'Thursday', 'Friday','Saturday','Sunday'];

我有一个从 Firestore 查询中获得的包含 7 个文档的列表,每个元素都是一张卡片……所以我的 ListView 显示 7 个项目,每个项目相当于一个工作日。

我有一个返回映射列表的函数,我只需要为文档列表中的每个项目增加cont++。我在ListView 中调用了这个函数,所以我只得到了一个小部件列表。

getExpenseItems(AsyncSnapshot<QuerySnapshot> snapshot, context) {
var cont=0;
var docs = snapshot.data.documents;
var favs = new List<DocumentSnapshot>();
var ind=0;

   return favs
        .map((doc) => new 
          Padding(       
            padding: const EdgeInsets.all(30),
            child: Container(
              height:100,
              width: SizeConfig.screenWidth,
              child: 
              Align(
                alignment: Alignment.centerRight,
                child:
              Row(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[

                  Column(
                    children: <Widget>[
                      Container(
                        height:100,
                        width: SizeConfig.screenWidth/4,
                        child:
                          Text(_weekdays[cont]+"\n\n" + doc['name'],style:TextStyle(fontSize: 19),),
                      ),
                    ],
                  ),
                  Column(
                    children: <Widget>[              
                      Container(
                        height: 100,
                        width: SizeConfig.screenWidth/4,
                        child: GestureDetector(
                          child: SizedBox(
                            width: MediaQuery.of(context).size.width,
                            //margin: EdgeInsets.symmetric(horizontal: 5.0),
                            height: 150,
                            child: Image.asset(doc['image'], fit: BoxFit.contain,)
                            //Text('text $i', style: TextStyle(fontSize: 16.0),)
                          ),
                          onTap: (){
                            Navigator.of(context).push(MaterialPageRoute(
                              builder: (BuildContext context) => ViewRecipe(
                                image: doc['image'], 
                                      titulo: doc['name'], 
                                      user: user, rating: 
                                      doc['rating'], 
                                      steps: doc['steps'],
                                      recipeId: doc['id'],
                                      )));
                                  },
                                ),

                        ),

                      ],
                  ),
                ],
              ),
            ),
          ),
        )
  ).toList();
}

如果有任何帮助,我将不胜感激!谢谢。

【问题讨论】:

    标签: flutter dart foreach iteration


    【解决方案1】:

    而不是fat arrow (=&gt;)

       return favs
            .map((doc) => new 
              Padding(  
    

    如果你写

    return favs.map((doc){ 
        cont +=1;
        print('cont: $cont); //check the result
        return new Padding( 
    ...
    } // 
    

    可能会完成这项工作

    【讨论】:

    • 感谢您的回答,我遇到了一些错误,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2013-03-27
    • 2013-04-03
    相关资源
    最近更新 更多