gpt4 book ai didi

Flutter Hooks 使用 useEffect 获取数据 - setState() 或 markNeedsBuild() 在构建期间调用

转载 作者:行者123 更新时间:2023-12-04 12:07:53 25 4
gpt4 key购买 nike

目前正在探索functional_widgets 和flutter_hooks。对 reactjs 有同样的想法,我正在使用以下代码获取数据。

@hwidget
Widget homeScreen(BuildContext context) {
TodoListProvider model = Provider.of<TodoListProvider>(context);
useEffect(() {
print('effect');
model.fetchList();
return () => {};
}, []);
return Scaffold(
appBar: _buildAppbar(context, model),
bottomNavigationBar: _buildBottomNav(context, model),
floatingActionButton: _buildFloatingAction(context),
body: PageTransitionSwitcher(
duration: const Duration(milliseconds: 300),
reverse: model.reverse,
transitionBuilder: (
Widget child,
Animation<double> animation,
Animation<double> secondaryAnimation,
) {
return SharedAxisTransition(
child: child,
animation: animation,
secondaryAnimation: secondaryAnimation,
transitionType: SharedAxisTransitionType.horizontal,
);
},
child: _getCurrentTab(model.currentIndex),
),
);
}

我不认为这是正确的方法,因为它会引发错误。 enter image description here

最佳答案

问题在于:

  useEffect(() {
model.fetchList();
}, []);
fetchList在构建和修改祖先小部件内部同步调用,这是不好的。
您可以包装 fetchList调用微任务:
  useEffect(() {
Future.microtask(() => model.fetchList());
}, []);

关于Flutter Hooks 使用 useEffect 获取数据 - setState() 或 markNeedsBuild() 在构建期间调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62910479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com