如何从回调函数调用changeNotifier?扑
我在Flutter应用程序中调用构建功能的函数。 当我调用notifyListeners();
从异步回调函数我获得以下例外:
setState() or markNeedsBuild() called during build.
我的提供商:我的
class TechTaskProvider extends ChangeNotifier {
...
void requestTasks() {
CollectionReference<Map<String, dynamic>> _collection =
FirebaseFirestore.instance
.collection('techTasks')
.doc(_currentTech!.uid)
.collection('techTasks');
_collection.get().then((s) {
_handleResult(s);
notifyListeners();
});
}
触发器窗口:我的触发器:
class Trigger extends StatefulWidget {
const Trigger({Key? key}) : super(key: key);
@override
State<Trigger> createState() => _TriggerState();
}
class _TriggerState extends State<Trigger> {
@override
Widget build(BuildContext context) {
MyProvider _myProv = Provider.of<MyProvider>(context);
//
if (isFirstRun) {
//Set the first techincian:
isFirstRun = false;
// //Trigger Firestore request:
_myProv.requestTasks();
}
return Page();
}
}
I call a function from the build function in my Flutter app.
When I call notifyListeners();
from an async callback function I get the following exception:
setState() or markNeedsBuild() called during build.
My Provider:
class TechTaskProvider extends ChangeNotifier {
...
void requestTasks() {
CollectionReference<Map<String, dynamic>> _collection =
FirebaseFirestore.instance
.collection('techTasks')
.doc(_currentTech!.uid)
.collection('techTasks');
_collection.get().then((s) {
_handleResult(s);
notifyListeners();
});
}
My Trigger widget:
class Trigger extends StatefulWidget {
const Trigger({Key? key}) : super(key: key);
@override
State<Trigger> createState() => _TriggerState();
}
class _TriggerState extends State<Trigger> {
@override
Widget build(BuildContext context) {
MyProvider _myProv = Provider.of<MyProvider>(context);
//
if (isFirstRun) {
//Set the first techincian:
isFirstRun = false;
// //Trigger Firestore request:
_myProv.requestTasks();
}
return Page();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这样的事情应该解决问题:
Something like this should do the trick:
在更好的解决方案下方,不使用变量
isfirstrun
。Below the better solution without using variable
isFirstRun
.