Flutter 颤振:如何在10分钟后已经有一些小部件的列中添加小部件
我想在一列中绘制三个小部件,但第一个小部件要在10分钟后绘制。 {编辑:从昵称获得答案后,我尝试了Timer.duration,但它引发了错误:没有为类型“\u MainScreenState”定义方法“Timer”。请尝试将名称更正为现有方法的名称,或定义一个名为“Timer”的方法。我现在应该做什么} 多谢各位Flutter 颤振:如何在10分钟后已经有一些小部件的列中添加小部件,flutter,widget,delay,Flutter,Widget,Delay,我想在一列中绘制三个小部件,但第一个小部件要在10分钟后绘制。 {编辑:从昵称获得答案后,我尝试了Timer.duration,但它引发了错误:没有为类型“\u MainScreenState”定义方法“Timer”。请尝试将名称更正为现有方法的名称,或定义一个名为“Timer”的方法。我现在应该做什么} 多谢各位 class MainScreenPageUI扩展StatefulWidget{ @凌驾 _MainScreenState createState()=>\u MainScreenS
class MainScreenPageUI扩展StatefulWidget{
@凌驾
_MainScreenState createState()=>\u MainScreenState();
}
类_MainScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“此处有应用标题”),
正文:专栏(
儿童:[
Text('我希望此小部件在延迟后绘制),
文本(“第二个小部件”),
文本(“第三个小部件”),
],
),
);
}
}
尝试将其包装在计时器
函数中,看看它是如何工作的
Timer(Duration(minutes: 10), () {
Text('I want this widget to be drawn after some delay');
});
您需要
导入'dart:async'编码>以使此函数工作。尝试类似的操作。这个想法是:
-您可以设置一个局部变量来控制是否绘制文本(真/假)。
-在初始化状态下,设置计时器,该计时器将在10分钟后将变量翻转为true。它还将调用setState(),以便重建屏幕
(我没有尝试编译此文件,因此在第一次尝试时可能会抛出一些错误):
class MainScreenPageUI扩展StatefulWidget{
@凌驾
_MainScreenState createState()=>\u MainScreenState();
}
类_MainScreenState扩展状态{
bool drawFirstWidget=false;
@凌驾
void initState(){
super.initState();
计时器(持续时间(分钟:10),(){
setState((){drawFirstWidget=true});
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“此处有应用标题”),
正文:专栏(
儿童:[
如果(drawFirstWidget)文本('我希望在一些延迟后绘制此小部件'),
文本(“第二个小部件”),
文本(“第三个小部件”),
],
),
);
}
}
class MainScreenPortraitPageUI extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreenPortraitPageUI> {
bool drawFirstWidget=false;
@override
void initState() {
super.initState();
Timer(Duration(minutes: 10), () {
setState(() {drawFirstWidget=true});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("App title goes here")),
body: Column(
children: [
if (drawFirstWidget) Text('I want this widget to be drawn after some delay'),
Text("Second widget"),
Text("Third widget"),
],
),
);
}
}