gpt4 book ai didi

android - 异步周期性 setState

转载 作者:IT王子 更新时间:2023-10-29 07:21:20 25 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数会定期将小部件添加到我的列表中(例如每 2 秒添加一次)并调用 setState 来更新我正在绘制的列表。

我试图只调用 setState(),它只工作一次,我认为 setState 只是不调用函数。我什至尝试在函数中使用 While(true),但在 setState 之后它就中断了。我也试过递归,也是调用一次就停止了。

class _HomePageState extends State<HomePage>{

List<Widget> currentMessages = [];

Future<void> addText() async {
await Future.delayed(Duration(seconds: 2));
setState((){
currentMessages.add(Text("It works?"));
});
}

@override
Widget build(BuildContext context) {

addText();

return Scaffold(
body: Center(
child: ListView(
children: (currentMessages.isEmpty ? <Widget>[Container()]:currentMessages),
),
)
);
}
}

最佳答案

覆盖initStatedispose,分别创建和取消定时器。例如:

class MyAppState extends State<MyApp> {
Timer t;

@override
void initState() {
super.initState();
t = Timer.periodic(
Duration(seconds: 1),
(_) {
setState(() {
// do something here that will happen every second
});
},
);
}

@override
void dispose() {
t?.cancel();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Container();
}
}

关于android - 异步周期性 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55482241/

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