The following assertion was thrown while calling onSubmitted for TextInputAction.done:
Tried to listen to a value exposed with provider, from outside of the widget tree.
This is likely caused by an event handler (like a button's onPressed) that called
Provider.of without passing `listen: false`. To fix, write:
Provider.of<Counter>(context, listen: false);
It is unsupported because may pointlessly rebuild the widget associated to the
event handler, when the widget tree doesn't care about the value.
The context used was: Boxes(dependencies: [_InheritedProviderScope<Counter?>], state:
_BoxesState#274b3)
'package:provider/src/provider.dart':
Failed assertion: line 274 pos 7: 'context.owner!.debugBuilding ||
listen == false ||
debugIsInInheritedProviderUpdate'
这个错误发生在我添加了一行将一些数据插入到列表中之后。
TextField(
controller: _textController,
style: const TextStyle(color: Colors.white),
decoration:
const InputDecoration(
border:
OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(40.0)),
),
labelText: "Enter here",
),
onSubmitted: (value) {
setState(() {
Provider.of<Counter>(context, listen: false); // add listen: false here
_boxStorage += "- ${_textController.text}\n";
_storage.insert(context.watch<Counter>().count, _boxStorage);
_saveSharedPreferences();
_textController.clear();
});
}
),
我已经尝试添加'Provider.of(context,listen:false)',这是错误消息中建议的解决方案。然而,这个解决方案对我不起作用,并且在运行代码后再次出现相同的错误。有人能帮忙吗?
2条答案
按热度按时间i1icjdpr1#
代码中的要求并不十分明确。
对于行:
如果您不想从provider访问任何值,不知道为什么要添加此行。没有必要添加该行。
6vl6ewon2#
编辑
将“
context.watch<Counter>.count
”更改为context.read<Counter>.count
并删除Provider.of<Counter>(context, listen: false);
后问题解决