在颤动的 ListView.builder 中,我得到了 Null 值
Posted
技术标签:
【中文标题】在颤动的 ListView.builder 中,我得到了 Null 值【英文标题】:In flutter ListView.builder I got Null value 【发布时间】:2021-07-02 02:41:51 【问题描述】:我创建了一个名为“记录”的地图,当用户按下“保存”按钮时,该地图的键取自用户,值来自我在代码中的计时器。 但问题是当我创建一个 ListView.builder 将此地图索引导出到卡片时,它给了我每个卡片索引中的 Null 值! 我怎样才能显示真正的价值而不是 Null ?!!
这是我的代码:
var _item;
List listCount = [];
Map<String, dynamic> records = ;
String name;
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);
,
),
],
);
,
);
变量 _item 正在从另一个站点获取它的值,请参见:
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)),
);
,
),
我在这里创建 ListView.builder:
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,
),
),
);
,
),
链接中的图片是我的应用程序的屏幕截图。
Image
【问题讨论】:
【参考方案1】:查看最初为 null 的 _item 变量。您没有为它分配任何价值。请检查您的代码。您正在为您的记录分配一个空值,因为 _item 没有被赋予任何值。
onChanged: (value)
_item = value;
【讨论】:
实际上我给出了值,我在控制台中打印它们但是当试图在应用卡中显示它时,它失败并显示 Null !! 您能否发布完整的代码以显示记录列表以及为变量_item 赋值的位置。此外,您能否打印列表计数的最后一个值以确保它也不会返回 null 我已经编辑了我的帖子,并在代码中显示了变量 _item 获取它的值的位置。如果有必要,我可以发布整个代码吗?在同一页中大约有 278 行【参考方案2】:你没有给 _item 变量赋值,我假设你想像这样在 onChanged 事件中赋值:
onChanged: (value)
_item = value;
或者您可能想将名称添加到列表中?
【讨论】:
实际上我给出了值,我在控制台中打印它们但是当试图在应用卡中显示它时,它失败并显示 Null !!【参考方案3】:如果我理解正确,您已根据保存按钮 onPressed 事件中的名称变量将项目值存储到记录中。但是您正在通过 ListView 索引值获取记录。因此,在基于该索引的记录集合中没有找到记录。所以它返回空值。
提供索引以将项目存储在“保存”按钮中,而不是名称。或者根据 ListView 构建器中的名称而不是索引来检查记录。
【讨论】:
以上是关于在颤动的 ListView.builder 中,我得到了 Null 值的主要内容,如果未能解决你的问题,请参考以下文章
如果数据发生变化,颤动如何更新 Listview.builder
如何构建包含 ListView.Builder 的自定义行,以在颤动中构建 ElevatedButton?