如何获取和更新小部件列表中的小部件的当前索引?

时间:2019-10-20 18:38:36

标签: flutter

我正在构建小部件列表。我想在列表图块中显示小部件的索引。我该怎么办?是否显示它,因为该键是在运行时分配的,并且当前索引甚至在构建小部件之前就试图初始化?如果是,我如何显示小部件索引?如果没有,那又是怎么回事,我又如何显示索引?陷入这个问题的方式已经太久了,现在还不算什么。

  final GlobalKey<AnimatedListState> _listKey = GlobalKey();
  List<Widget> _data = [];

  Widget SubActivitiesListTiles() {
    SizeConfig().init(context);
    return Container(
      child: Container(
        child: AnimatedList(
            shrinkWrap: true,
            key: _listKey,
            initialItemCount: _data.length,
            itemBuilder: (context, index, animation) {
              return _buildItem(_data[index], animation);
            }),
      ),
    );

  Widget _buildItem(CustomListTile, Animation animation) {
    return SizeTransition(
      sizeFactor: animation,
      child: Card(
        shape: Border(bottom: BorderSide(width: 0.4, color: Colors.black12)),
        elevation: 0,
        child: CustomListTile,
      ),
    );
  }
Widget ActivityTile(context, obj) {
    int currentIndex=_data.indexWhere((item) =>(item.key == uniqueKey));;
    UniqueKey uniqueKey = new UniqueKey();

    return Container(
      key: uniqueKey,
        color: Colors.white,
        child: ListTile(
            onTap: () {
              setState(() {
                currentIndex =
                    _data.indexWhere((item) =>(item.key == uniqueKey));
                Index;
                updateTile(currentIndex);
              });
            },
            title: Text(
              '$currentIndex',)
           )
      )
}

1 个答案:

答案 0 :(得分:1)

您可以使用widget.index。

在源代码中,您可以使用widget.index访问列表或listView中的小部件顺序,此变量将返回相应的小部件值。

像这样:

 return TextFormField(
      controller: _nameController,
      onChanged: (v) => _MyFormState.friendsList[widget.index] = v,
      decoration: InputDecoration(
        hintText: 'enter index number'
      ),
      validator: (v){
        if(v.trim().isEmpty) return 'enter the value';
        return null;
      },
    );