flutter - 为什么每当进修班召回课程时,我的 initstate 会被召回?
问题描述
感谢您的时间,所以在这段代码中,我包含了打印语句以查看发生了什么......
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'dart:async';
void main() {
return runApp(
Refresher(),
);
}
class Refresher extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _RefresherState();
}
}
class _RefresherState extends State<Refresher> {
Timer timer;
@override
void initState() {
super.initState();
timer = Timer.periodic(
Duration(hours: 24),
(t) => setState(() {}),
);
}
@override
void dispose() {
timer.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
print('im the refresher');
return ScreenTimer();
}
}
class ScreenTimer extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _ScreenTimerState();
}
}
class _ScreenTimerState extends State<ScreenTimer> {
_ScreenTimerState(){
print('state called');
}
Timer timer;
Future<List<String>> runningShow;
@override
void initState() {
super.initState();
// Reset urls every 24hrs
print('im screen timer ');
runningShow = _getScreen1();
timer = Timer.periodic(
Duration(seconds: 30),
(t) => setState(
() {},
),
);
}
@override
void dispose() {
timer.cancel();
super.dispose();
}
}
这是我的输出
I/flutter ( 4584): im the refresher
I/flutter ( 4584): state called
I/flutter ( 4584): im screen timer
I/Choreographer( 4584): The application may be doing too much work on its main thread.
I/flutter ( 4584): im the refresher
I/flutter ( 4584): im the refresher
有没有一种方法可以在每次调用类时再次调用 initstate?因为我需要在 24 小时后调用 _getscreen(//此函数检查数据库是否有任何更改)......
解决方案
只需移动创建一个更新您的成员变量的新方法
void _updateShowRunning () {
runningShow = _getScreen1();
}
initState
现在定期调用该方法。
_updateShowRunning();
timer = Timer.periodic(
Duration(seconds: 30),
(t) => setState(
_updateShowRunning,
),
);
推荐阅读
- javascript - 在Javascript中将可编辑文本框添加到画布元素
- pine-script - 使用 for 循环测试多个策略参数
- label - 警报消息包括标签文本
- list - 如何仅将图片框的一部分添加到列表中
- c# - 从 Outlook VSTO 插件扩展交换在线公用文件夹
- android - Android、Linux 和 iOS - 使用蓝牙和 TCP/IP?
- node.js - 多对多关系的正确文件夹结构
- dataset - 从 Subreddit 抓取超过 1000 条数据
- nexus - 在 2 个 Nexus3 实例之间迁移
- android - 在 Jetpack compose 中定义视图权重的问题