Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从itemBuilder的返回函数外部访问listView生成器的索引号?_Flutter_Dart - Fatal编程技术网

Flutter 如何从itemBuilder的返回函数外部访问listView生成器的索引号?

Flutter 如何从itemBuilder的返回函数外部访问listView生成器的索引号?,flutter,dart,Flutter,Dart,这是我的物品清单 class MealsListData { String titleTxt; String startColor; String endColor; List<String> meals; int index; MealsListData({ this.titleTxt = '', this.startColor = "#ffbf00", this.endColor = "#FFDF29", this.mea

这是我的物品清单

class MealsListData {
  String titleTxt;
  String startColor;
  String endColor;
  List<String> meals;
  int index;

  MealsListData({
    this.titleTxt = '',
    this.startColor = "#ffbf00",
    this.endColor = "#FFDF29",
    this.meals,
    this.index,
  });

  static List<MealsListData> tabIconsList = [
    MealsListData(
      titleTxt: 'Breakfast',
      meals: ["Bread", "Peanut butter", "Apple"],
      index: 1
    ),
    MealsListData(
      titleTxt: 'Lunch',
      meals: ["Salmon", "Mixed veggies", "Avocado"],
      index: 2
    ),
    MealsListData(
      titleTxt: 'Snack',
      meals: ["Recommend:", "800 kcal"],
      index: 3
    ),
  ];
}
下面是我用来获得一张卡的MealsView类的代码

class MealsView extends StatelessWidget {
  final MealsListData mealsListData;
  final AnimationController animationController;
  final Animation animation;
  final int itemIndex;

  const MealsView(
      {Key key, this.mealsListData, this.animationController, this.animation, this.itemIndex})
      : super(key: key);

@override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      animation: animationController,
      builder: (BuildContext context, Widget child) {
        return FadeTransition(
          opacity: animation,
          child: new Transform(
            transform: new Matrix4.translationValues(
                100 * (1.0 - animation.value), 0.0, 0.0),
                //this is the individual card
            child: SizedBox(
              width: 200,
              child: 
                  Padding(
                    padding: const EdgeInsets.only(
                        top: 32, left: 8, right: 8, bottom: 16),
                    child: Container(
                                   child: Padding(
                                        padding: const EdgeInsets.only(
                                           top: 22, left: 16, right: 16, bottom: 8),
                                        child: Column(
                                          mainAxisAlignment: MainAxisAlignment.center,
                                          crossAxisAlignment: CrossAxisAlignment.start,
                                          children: <Widget>[
                                          Text(
                                            mealsListData.titleTxt,
                                            textAlign: TextAlign.center,
                                          ),
                                       //Heading(Inside card) Style closed
                                          Expanded(
                                           child: Padding(
                                            padding:
                                             const EdgeInsets.only(top: 22, bottom: 8),
                                            child: Row(
                                              mainAxisAlignment: MainAxisAlignment.start,
                                              crossAxisAlignment: CrossAxisAlignment.start,
                                              children: <Widget>[
                                               //this is the list of items
                                               Text(
                                                 mealsListData.meals.join("\n"),
                                               ),
                                  ],
                                ),
                              ),
                            ),                            
                          ],
                        ),
                      ),

                  ),                                

            ),
          )
        )
        );
      },
    );
  }
class MealsView扩展了无状态小部件{
最终测量列表数据测量列表数据;
最终AnimationController AnimationController;
最终动画;
最终整数项索引;
康斯特米尔斯维尤酒店(
{Key Key,this.mealsListData,this.animationController,this.animation,this.itemIndex})
:super(key:key);
@凌驾
小部件构建(构建上下文){
返回动画生成器(
动画:animationController,
生成器:(BuildContext上下文,小部件子项){
返回衰减转换(
不透明度:动画,
孩子:新的转变(
转换:新矩阵4.translationValues(
100*(1.0-动画值)、0.0、0.0),
//这是个人卡
孩子:大小盒子(
宽度:200,
儿童:
填充物(
填充:仅限常量边设置(
顶部:32,左侧:8,右侧:8,底部:16),
子:容器(
孩子:填充(
填充:仅限常量边设置(
顶部:22,左侧:16,右侧:16,底部:8),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
MealListData.titleTxt,
textAlign:textAlign.center,
),
//标题(卡片内部)样式已关闭
扩大(
孩子:填充(
衬垫:
仅限常数边集(顶部:22,底部:8),
孩子:排(
mainAxisAlignment:mainAxisAlignment.start,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
//这是项目列表
正文(
MealListData.Founds.join(“\n”),
),
],
),
),
),                            
],
),
),
),                                
),
)
)
);
},
);
}
我做错了什么?当我点击卡时,索引号应该打印在调试控制台上,但我得到的是空的。

而不是:

itemIndex: MealsListData().index);
print(MealsListData().index);}),
试一试


希望对您有所帮助

因为您正在打印MealsListData().index,而不是生成器返回的索引,所以您将得到null
itemIndex: MealsListData().index);
print(MealsListData().index);}),
itemIndex: mealsListData[index]);
print(mealsListData[index]);}),