【发布时间】:2018-08-16 02:12:03
【问题描述】:
我正在动态构建一个 CheckboxListTile,它运行良好,但是当我单击复选框时,我会收到此错误
The following assertion was thrown building NotificationListener<KeepAliveNotification>:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2730 pos 14:
'_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
似乎与重复键有关,所以我在我的顶级列表视图中添加了一个键并且错误停止了,但是现在
我的复选框列表是使用此代码构建的
new FutureBuilder(
future: _getRefDocs(),
builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return new Text('Waiting to start');
case ConnectionState.waiting:
return new Text('');
default:
if (snapshot.hasError) {
return new Text('Error: ${snapshot.error}');
} else {
//myInitialData = snapshot.data;
return new ListView(
key: new Key(key['docid'].toString())
children: snapshot.data.map((dynamic key) {
bool myvalue = false;
if (key['selected'] == 1) {
myvalue = true;
selectdocs.add(key['docid']);
}
return new CheckboxListTile(
title: new Text(key['docname']),
value: myvalue,
//selected: myvalue,
onChanged: (bool value) {
setState(() {
myvalue = value;
});
if (value == true) {
selectdocs.add(key['docid']);
} else {
selectdocs.remove(key['docid']);
}
}
);
}).toList(),
);
}
}
});
现在,但是在我添加键之后,键盘不会弹出,单击时复选框不会更改,当我单击它时,它会弹回顶部的文本框焦点。如果我删除密钥,那么每次单击复选框时都会出现错误。
有什么想法吗?
【问题讨论】:
-
为什么
selected: myValue这一行被注释掉了?这就是控制复选框是否被选中的原因。 -
我尝试了两种方法,它没有改变错误,或者当我通过向列表视图添加键来消除错误时,它仍然跳回顶部并且键盘不起作用。我还添加了一个滚动控制器,但没有帮助。
-
好的,检查一下
-
@Robert:你找到解决方案了吗?我有同样的问题。
-
看来错误指向你的
NotificationListener。我试图检查您的代码,但找不到您调用NotificationListener小部件的确切位置。如果您可以分享您的complete 代码,是否有可能?
标签: flutter