在颤振中访问地图索引的问题

时间:2021-04-08 07:31:16

标签: android flutter listview

我有一个 map ,并且想通过 ListView.Builder 在卡片中显示它的组件,但问题是通过访问该地图的索引..

运行应用程序时,它在卡片中返回“null”!!

针对类似问题,我尝试了在 StackOverFlow 中看到的许多解决方案,但都没有结果。

在这里我确定了我的地图:

var _item;
  List listCount = [];

  Map<String, dynamic> records = {};
  String name;

在这里我给 var _item 赋值:

MyCard(
                    colour: Colors.lightBlueAccent,
                    maker: Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        StreamBuilder<int>(
                          stream: _stopWatchTimer2.rawTime,
                          initialData: 0,
                          builder: (context, snap) {
                            final value = snap.data;
                            final displayTime = StopWatchTimer.getDisplayTime(
                                value,
                                hours: _isHours2);
                            _item = displayTime;
                            return Padding(
                              padding: EdgeInsets.all(5.0),
                              child: Text(displayTime,
                                  style: TextStyle(
                                      fontSize: 30.0, color: Colors.white)),
                            );
                          },
                        ),
                      ],
                    ),
                  ),

在“保存”按钮中,我提供地图的第一个参数并分配名称变量:

createAlertDialog(buildContext, context) {
    TextEditingController controller;
    return showDialog(
      context: context,
      // barrierDismissible: false,
      builder: (context) {
        return AlertDialog(
          title: Text(
            'Type record name',
            textAlign: TextAlign.center,
            style: TextStyle(fontSize: 18.0),
          ),
          content: TextField(
              controller: controller,
              onChanged: (value) {
                name = value;
              }),
          actions: [
            MaterialButton(
              elevation: 5.0,
              child: Text('Save'),
              onPressed: () {
                listCount.add(_item);
                print(_item);
                records[name] = _item;
                print(records);
                Navigator.pop(context);
              },
            ),
            MaterialButton(
              elevation: 5.0,
              child: Text('Cancel'),
              onPressed: () {
                Navigator.pop(context);
              },
            ),
          ],
        );
      },
    );
  }

最后在这里我尝试通过 listview.builder 在卡片中显示它:

Container(
            color: Colors.white,
            child: ListView.builder(
              scrollDirection: Axis.vertical,
              shrinkWrap: true,
              itemCount: records.length,
              itemBuilder: (context, index) {
                return MyCard(
                  colour: Colors.cyanAccent,
                  maker: Container(
                    width: 250.0,
                    height: 75.0,
                    child: Text(
                      '${records[index]}',
                      style: TextStyle(fontSize: 25.0),
                      textAlign: TextAlign.center,
                    ),
                  ),
                );
              },
            ),
          ),

我认为 itemBuilder 的第二个参数(索引)有问题,因为我随机用另一个关键字替换了这个关键字,并在运行我的应用程序“Null”时得到了相同的结果。

This screenShot explain the problem:

1 个答案:

答案 0 :(得分:0)

您可以将地图条目作为列表获取:

final recordsEntries = records.entries.toList()

然后,您有一个 MapEntry 列表,并且能够访问与集合中每个项目关联的键和值。

recordsEntries[index].key
recordsEntries[index].value