【发布时间】:2018-07-28 10:15:08
【问题描述】:
基本上,我正在尝试制作一个应用程序,其内容将使用从网站获取信息的异步函数进行更新,但是当我尝试设置新状态时,它不会重新加载新内容。如果我调试应用程序,它会显示当前内容是新内容,但在“重建”整个小部件后,它不会显示新信息。
编辑:loadData()方法,基本上是读取一个带有http包的URL,该URL包含一个JSON文件,其内容每5分钟更新一次,有新消息。例如,带有体育实时记分牌的 .json 文件,其分数总是在变化,因此内容应该总是随着新结果而变化。
class mainWidget extends StatefulWidget
{
State<StatefulWidget> createState() => new mainWidgetState();
}
class mainWidgetState extends State<mainWidget>
{
List<Widget> _data;
Timer timer;
Widget build(BuildContext context) {
return new ListView(
children: _data);
}
@override
void initState() {
super.initState();
timer = new Timer.periodic(new Duration(seconds: 2), (Timer timer) async {
String s = await loadData();
this.setState(() {
_data = <Widget> [new childWidget(s)];
});
});
}
}
class childWidget extends StatefulWidget {
childWidget(String s){
_title = s;
}
Widget _title;
createState() => new childState();
}
class childState extends State<gameCardS> {
Widget _title;
@override
Widget build(BuildContext context) {
return new GestureDetector(onTap: foo(),
child: new Card(child: new Text(_title));
}
initState()
{
super.initState();
_title = widget._title;
}
}
【问题讨论】:
-
请描述各种活动部件,并为预计会发生变化的事物提供示例值。我们需要输入和期望的输出。
-
我刚刚添加了有关该问题的更多信息。
-
您是否尝试过仅包装您的 _title = widget._title;在 setState 中?
-
@Robert 是的,我必须添加子 Statefulwidget(带有 GestureRecognizer 的那个)工作正常,问题是尝试用 childWidget 的新实例刷新祖先
-
通常我所做的是创建一个未来并使用 Futurebuilder,这似乎每次都能为我完成这项工作。您也可以使用 Streams 做同样的事情。
标签: android dart flutter dart-async